Answers Database
SYNOPSYS: How to instantiate BSCAN in the 4k/5k in Verilog/VHDL in Synopsys (FPGA Compiler, Design Compiler, FPGA Express)
Record #488
Product Family: Software
Product Line: Synopsys
Product Part: FPGA Compiler
Product Version: 3.3b
Problem Title:
SYNOPSYS: How to instantiate BSCAN in the 4k/5k in Verilog/VHDL in Synopsys (FPGA Compiler,
Design Compiler, FPGA Express)
Problem Description:
Urgency: Standard
General Description:
To use boundary Scan in Xilinx devices, you must instantiate the boundary scan
symbol (BSCAN) and the associated dedicated I/O, and use the "dont_touch"
attribute; otherwise it is possible that BSCAN will be deleted by Synopsys.
Note, the code examples for instantiaing BSCAN will work with
FPGA Express v2.0 or later and FPGA Compiler/Design Compiler.
Note FPGA Express does not use Compiler scripts. The compile scripts only
apply to the FPGA Compiler/Design Compiler flow.
Solution 1:
III. Verilog Code for Instantiating BSCAN in the XC5200:
//XC5200 Example of instantiating BSCAN symbol
module example (a,b,c);
input a, b;
output c;
reg c;
wire tck_net, tck_net_in;
wire tdi_net, tdi_net_in;
wire tms_net, tms_net_in;
wire tdo_net, tdo_net_out;
BSCAN u1 (.TDI(tdi_net), .TMS(tms_net), .TCK(tck_net), .TDO(tdo_net));
TDI u2 (.I(tdi_net_in));
TMS u3 (.I(tms_net_in));
TCK u4 (.I(tck_net_in));
TDO u5 (.O(tdo_net_out));
IBUF u6 (.I(tdi_net_in), .O(tdi_net));
IBUF u7 (.I(tms_net_in), .O(tms_net));
IBUF u8 (.I(tck_net_in), .O(tck_net));
OBUF u9 (.I(tdo_net), .O(tdo_net_out));
always@(posedge b)
c<=a;
endmodule
Solution 2:
IV. Runscript for compiling XC5200 BSCAN Verilog Example:
PART = 5202PC84-5
TOP = example
read -format verilog "bscan5k.v"
set_port_is_pad "*"
insert_pads
set_dont_touch u1
set_dont_touch u2
set_dont_touch u3
set_dont_touch u4
set_dont_touch u5
set_dont_touch u6
set_dont_touch u7
set_dont_touch u8
set_dont_touch u9
/* Note, set_dont_touch/dont_touch are case-sensitive
with respect to instance names. */
compile
set_attribute TOP "part" -type string PART
write -f xnf -h -o "bscan5k.sxnf"
Solution 3:
V. Runscript for compiling XC4000 BSCAN Verilog Example:
PART = 4025ehq240-3
TOP = example
read -format verilog "bscan4k.v"
set_port_is_pad "*"
insert_pads
set_dont_touch u1
set_dont_touch u2
set_dont_touch u3
set_dont_touch u4
set_dont_touch u5
/* Note, set_dont_touch/dont_touch are case-sensitive
with respect to instance names. */
compile
replace_fpga
set_attribute TOP "part" -type string PART
write -f xnf -h -o "bscan4k.sxnf"
Solution 4:
VII. Runscript for compiling XC4000 BSCAN VHDL Example:
PART = 4025EHQ240-3
TOP = example
analyze -format vhdl "bscan4k.vhd"
elaborate TOP
set_dont_touch u1
set_dont_touch u2
set_dont_touch u3
set_dont_touch u4
set_dont_touch u5
/* Note, set_dont_touch/dont_touch are case-sensitive
with respect to instance names. */
set_port_is_pad "*"
insert_pads
compile
replace_fpga
set_attribute TOP "part" -type string PART
write -f xnf -h -o "bscan4k.sxnf"
Solution 5:
II. Verilog Code for Instantiating BSCAN in the XC4000
NOTE: VERILOG IS CASE SENSITIVE! BE SURE TO FOLLOW
THE CASE USED IN THIS EXAMPLE!
//XC4000/XC4000E Example of instantiating BSCAN symbol
module example (a,b,c);
input a, b;
output c;
reg c;
wire tck_net;
wire tdi_net;
wire tms_net;
wire tdo_net;
BSCAN u1 (.TDI(tdi_net), .TMS(tms_net), .TCK(tck_net), .TDO(tdo_net));
TDI u2 (.I(tdi_net));
TMS u3 (.I(tms_net));
TCK u4 (.I(tck_net));
TDO u5 (.O(tdo_net));
always@(posedge b)
c<=a;
endmodule
Solution 6:
I. VHDL Code for Instantiating BSCAN in the XC5200:
-- XC5200 example of instantiating the BSCAN symbol
entity example is
port (a, b: in bit; c: out bit);
end example;
architecture xilinx of example is
component BSCAN
port(tdi, tms, tck: in bit; tdo: out bit);
end component;
component TCK
port ( I : out bit );
end component;
component TDI
port ( I : out bit );
end component;
component TMS
port ( I : out bit );
end component;
component TDO
port ( O : in bit );
end component;
component ibuf
port (i: in bit; o: out bit);
end component;
component obuf
port(i: in bit; o: out bit);
end component;
signal tck_net, tck_net_in : bit;
signal tdi_net, tdi_net_in : bit;
signal tms_net, tms_net_in : bit;
signal tdo_net, tdo_net_out : bit;
begin
u1: bscan port map (tdi=>tdi_net, tms=>tms_net, tck=>tck_net, tdo=>tdo_net_out);
u2: ibuf port map(i=>tck_net_in, o=>tck_net);
u3: ibuf port map(i=>tdi_net_in, o=>tdi_net);
u4: ibuf port map(i=>tms_net_in, o=>tms_net);
u5: obuf port map(i=>tdo_net_out, o=>tdo_net);
u6: TCK port map (I=>tck_net_in);
u7: TDI port map (I=>tdi_net_in);
u8: TMS port map (I=>tms_net_in);
u9: TDO port map (O=>tdo_net);
process(b)
begin
if(b'event and b='1') then
c <= a;
end if;
end process;
end xilinx;
Solution 7:
VIII. Runscript for compiling XC5200 BSCAN VHDL Example:
PART = 5202PC84-5
TOP = example
analyze -format vhdl "bscan5k.vhd"
elaborate TOP
set_port_is_pad "*"
insert_pads
set_dont_touch u1
set_dont_touch u2
set_dont_touch u3
set_dont_touch u4
set_dont_touch u5
set_dont_touch u6
set_dont_touch u7
set_dont_touch u8
set_dont_touch u9
/* Note, set_dont_touch/dont_touch are case-sensitive
with respect to instance names. */
compile
set_attribute TOP "part" -type string PART
write -f xnf -h -o "bscan5k.sxnf"
Solution 8:
VI. VHDL Code for Instantiating BSCAN in the XC4000:
-- XC4000/XC4000E example of instantiating the BSCAN symbol
entity example is
port (a, b: in bit; c: out bit);
end example;
architecture xilinx of example is
component bscan
port(tdi, tms, tck: in bit; tdo: out bit);
end component;
component TCK
port ( I : out bit );
end component;
component TDI
port ( I : out bit );
end component;
component TMS
port ( I : out bit );
end component;
component TDO
port ( O : in bit );
end component;
signal tck_net : bit;
signal tdi_net : bit;
signal tms_net : bit;
signal tdo_net : bit;
begin
u1: bscan port map (tdi=>tdi_net, tms=>tms_net, tck=>tck_net, tdo=>tdo_net);
u2: tck port map (i=>tck_net);
u3: tdi port map (i=>tdi_net);
u4: tms port map (i=>tms_net);
u5: tdo port map (o=>tdo_net);
process(b)
begin
if(b'event and b='1') then
c <= a;
end if;
end process;
end xilinx;
End of Record #488 - Last Modified: 04/14/99 10:03 |