HDLmaker supports Synplify, Synopsys and Exemplar. Synplify has the best support, Synopsys Design Compiler and FPGA compiler are well supported, only minimal, and possibly outdated, support for Exemplar is provided. Synopsys FPGA Express is not currently supported.
Synplify
HDLmaker creates a Synplify project file when the -synplicity switch is used.
hdlmaker -synplicity smartnic.top
creates scripts/smartnic.prj
set_option -technology VIRTEX
set_option -part XCV300
set_option -package BG352
set_option -speed_grade -5
add_file -constraint smartnic.sdc
set_option -fanout_limit 100
set_option -maxfan_hard false
set_option -frequency 120
set_option -symbolic_fsm_compiler 0
set_option -resource_sharing 1
set_option -pipe 1
add_file -verilog "virtex.v"
add_file -verilog "datapipe.v"
add_file -verilog "dcache_ctrl.v"
add_file -verilog "dcache_mux.v"
add_file -verilog "mux2x64.v"
add_file -verilog "ram16x18.v"
add_file -verilog "srfifo_r2x_ctrl.v"
add_file -verilog "srfifo_r2x.v"
add_file -verilog "srfifo_r2x_12.v"
add_file -verilog "srfifo_w2x_ctrl.v"
add_file -verilog "srfifo_w2x.v"
add_file -verilog "tmux3x64.v"
add_file -verilog "zeroone.v"
add_file -verilog "dcache.v"
add_file -verilog "icache_ctrl.v"
add_file -verilog "icache.v"
add_file -verilog "inv.v"
add_file -verilog "idelay16.v"
add_file -verilog "inst_decode.v"
add_file -verilog "irstbuff.v"
add_file -verilog "mem_checker.v"
add_file -verilog "command_queue.v"
add_file -verilog "fifo_backoff.v"
add_file -verilog "pci_arbitrator.v"
add_file -verilog "pci_command_queue.v"
add_file -verilog "pci_command_select.v"
add_file -verilog "pci_flag_unit.v"
add_file -verilog "pci_read_data_pipe.v"
add_file -verilog "pci_sdram_control.v"
add_file -verilog "pci_target_unit.v"
add_file -verilog "pci_write_data_pipe.v"
add_file -verilog "srfifo_ctrl.v"
add_file -verilog "srfifo32.v"
add_file -verilog "pci_interface.v"
add_file -verilog "reg_file.v"
add_file -verilog "sdram_interface.v"
add_file -verilog "cmux2x1.v"
add_file -verilog "shifter.v"
add_file -verilog "smartnic_pads.v"
add_file -verilog "timing.v"
add_file -verilog "fifo_sp.v"
add_file -verilog "xmac_receive_interface.v"
add_file -verilog "xmac_receiver.v"
add_file -verilog "xmac_transmit_interface.v"
add_file -verilog "smartnic.v"
A couple of helpful scripts are provided in HDLMAKER_LIB/csh. These are
hdl_synplicity, runs hdlmaker and then copies all of the required files into the synplicity directory
hdl_synplicity smartnic
run_synplicity, invokes Synplify in batch mode,
run_synplicity smartnic
Synplicity Directives
There are several top file directives that are used to support Synplify. These are
Synopsys
HDLmaker creates the required dcshell scripts and a Makefile for Synopsys. For each component of the design HDLmaker creates a dcshell script called foo.job. HDLmaker also creates a make file called design.Make.
Here is a sample .job file
TOP = fifo_sp
PART = "xcv300bg352-5"
company = "dataCentauri, Inc., Hudson, NH"
read -format verilog fifo_sp.v
uniquify
current_design TOP
remove_constraint -all
compile -map_effort high
report_fpga > fifo_sp.fpga
report_timing > fifo_sp.timing
write -format db -hierarchy -output fifo_sp.db
exit
Here is a sample Makefile
smartnic.sedif: muxf5_32.db smartnic.db datapipe.db datapipe.db dcache.db dcache.db icache.db icache.db idelay16.db idelay16.db inst_decode.db inst_decode.db irstbuff.db irstbuff.db mem_checker.db mem_checker.db pci_interface.db pci_interface.db reg_file.db reg_file.db sdram_interface.db sdram_interface.db shifter.db shifter.db smartnic_pads.db smartnic_pads.db timing.db timing.db xmac_receiver.db xmac_receiver.db xmac_transmit_interface.db xmac_transmit_interface.db zeroone.db zeroone.db
dc_shell -f smartnic.job
smartnic.db: smartnic.v datapipe.v datapipe.db dcache.v dcache.db icache.v icache.db idelay16.v idelay16.db inst_decode.v inst_decode.db irstbuff.v irstbuff.db mem_checker.v mem_checker.db pci_interface.v pci_interface.db reg_file.v reg_file.db sdram_interface.v sdram_interface.db shifter.v shifter.db smartnic_pads.v smartnic_pads.db timing.v timing.db xmac_receiver.v xmac_receiver.db xmac_transmit_interface.v xmac_transmit_interface.db zeroone.v zeroone.db
dc_shell -f smartnic.job
datapipe.db: datapipe.v
dc_shell -f datapipe.job
dcache.sedif: dcache.db dcache_ctrl.db dcache_ctrl.db dcache_mux.db dcache_mux.db mux2x64.db mux2x64.db ram16x18.db ram16x18.db srfifo_r2x.db srfifo_r2x.db srfifo_r2x_12.db srfifo_r2x_12.db srfifo_w2x.db srfifo_w2x.db tmux3x64.db tmux3x64.db zeroone.db zeroone.db
dc_shell -f dcache.job
dcache.db: dcache.v dcache_ctrl.v dcache_ctrl.db dcache_mux.v dcache_mux.db mux2x64.v mux2x64.db ram16x18.v ram16x18.db srfifo_r2x.v srfifo_r2x.db srfifo_r2x_12.v srfifo_r2x_12.db srfifo_w2x.v srfifo_w2x.db tmux3x64.v tmux3x64.db zeroone.v zeroone.db
dc_shell -f dcache.job
dcache_ctrl.db: dcache_ctrl.v
dc_shell -f dcache_ctrl.job
dcache_mux.db: dcache_mux.v
dc_shell -f dcache_mux.job
mux2x64.db: mux2x64.v
dc_shell -f mux2x64.job
ram16x18.sedif: ram16x18.db
dc_shell -f ram16x18.job
ram16x18.db: ram16x18.v
dc_shell -f ram16x18.job
srfifo_r2x.sedif: srfifo_r2x.db srfifo_r2x_ctrl.db srfifo_r2x_ctrl.db
dc_shell -f srfifo_r2x.job
srfifo_r2x.db: srfifo_r2x.v srfifo_r2x_ctrl.v srfifo_r2x_ctrl.db
dc_shell -f srfifo_r2x.job
srfifo_r2x_ctrl.db: srfifo_r2x_ctrl.v
dc_shell -f srfifo_r2x_ctrl.job
srfifo_r2x_12.sedif: srfifo_r2x_12.db srfifo_r2x_ctrl.db srfifo_r2x_ctrl.db
dc_shell -f srfifo_r2x_12.job
srfifo_r2x_12.db: srfifo_r2x_12.v srfifo_r2x_ctrl.v srfifo_r2x_ctrl.db
dc_shell -f srfifo_r2x_12.job
srfifo_w2x.sedif: srfifo_w2x.db srfifo_w2x_ctrl.db srfifo_w2x_ctrl.db
dc_shell -f srfifo_w2x.job
srfifo_w2x.db: srfifo_w2x.v srfifo_w2x_ctrl.v srfifo_w2x_ctrl.db
dc_shell -f srfifo_w2x.job
srfifo_w2x_ctrl.db: srfifo_w2x_ctrl.v
dc_shell -f srfifo_w2x_ctrl.job
tmux3x64.db: tmux3x64.v
dc_shell -f tmux3x64.job
zeroone.db: zeroone.v
dc_shell -f zeroone.job
icache.sedif: icache.db icache_ctrl.db icache_ctrl.db ram16x18.db ram16x18.db
dc_shell -f icache.job
icache.db: icache.v icache_ctrl.v icache_ctrl.db ram16x18.v ram16x18.db
dc_shell -f icache.job
icache_ctrl.db: icache_ctrl.v
dc_shell -f icache_ctrl.job
ram16x18.sedif: ram16x18.db
dc_shell -f ram16x18.job
ram16x18.db: ram16x18.v
dc_shell -f ram16x18.job
idelay16.sedif: idelay16.db inv.db inv.db zeroone.db zeroone.db
dc_shell -f idelay16.job
idelay16.db: idelay16.v inv.v inv.db zeroone.v zeroone.db
dc_shell -f idelay16.job
inv.db: inv.v
dc_shell -f inv.job
zeroone.db: zeroone.v
dc_shell -f zeroone.job
inst_decode.db: inst_decode.v
dc_shell -f inst_decode.job
irstbuff.db: irstbuff.v
dc_shell -f irstbuff.job
mem_checker.db: mem_checker.v
dc_shell -f mem_checker.job
pci_interface.sedif: pci_interface.db command_queue.db command_queue.db command_queue.db command_queue.db fifo_backoff.db fifo_backoff.db pci_arbitrator.db pci_arbitrator.db pci_command_queue.db pci_command_queue.db pci_command_select.db pci_command_select.db pci_flag_unit.db pci_flag_unit.db pci_read_data_pipe.db pci_read_data_pipe.db pci_sdram_control.db pci_sdram_control.db pci_target_unit.db pci_target_unit.db pci_write_data_pipe.db pci_write_data_pipe.db srfifo32.db srfifo32.db zeroone.db zeroone.db
dc_shell -f pci_interface.job
pci_interface.db: pci_interface.v command_queue.v command_queue.db command_queue.v command_queue.db fifo_backoff.v fifo_backoff.db pci_arbitrator.v pci_arbitrator.db pci_command_queue.v pci_command_queue.db pci_command_select.v pci_command_select.db pci_flag_unit.v pci_flag_unit.db pci_read_data_pipe.v pci_read_data_pipe.db pci_sdram_control.v pci_sdram_control.db pci_target_unit.v pci_target_unit.db pci_write_data_pipe.v pci_write_data_pipe.db srfifo32.v srfifo32.db zeroone.v zeroone.db
dc_shell -f pci_interface.job
command_queue.db: command_queue.v
dc_shell -f command_queue.job
fifo_backoff.db: fifo_backoff.v
dc_shell -f fifo_backoff.job
pci_arbitrator.db: pci_arbitrator.v
dc_shell -f pci_arbitrator.job
pci_command_queue.db: pci_command_queue.v
dc_shell -f pci_command_queue.job
pci_command_select.db: pci_command_select.v
dc_shell -f pci_command_select.job
pci_flag_unit.db: pci_flag_unit.v
dc_shell -f pci_flag_unit.job
pci_read_data_pipe.db: pci_read_data_pipe.v
dc_shell -f pci_read_data_pipe.job
pci_sdram_control.db: pci_sdram_control.v
dc_shell -f pci_sdram_control.job
pci_target_unit.db: pci_target_unit.v
dc_shell -f pci_target_unit.job
pci_write_data_pipe.db: pci_write_data_pipe.v
dc_shell -f pci_write_data_pipe.job
srfifo32.sedif: srfifo32.db srfifo_ctrl.db srfifo_ctrl.db
dc_shell -f srfifo32.job
srfifo32.db: srfifo32.v srfifo_ctrl.v srfifo_ctrl.db
dc_shell -f srfifo32.job
srfifo_ctrl.db: srfifo_ctrl.v
dc_shell -f srfifo_ctrl.job
zeroone.db: zeroone.v
dc_shell -f zeroone.job
reg_file.db: reg_file.v
dc_shell -f reg_file.job
sdram_interface.db: sdram_interface.v
dc_shell -f sdram_interface.job
shifter.sedif: shifter.db cmux2x1.db cmux2x1.db
dc_shell -f shifter.job
shifter.db: shifter.v cmux2x1.v cmux2x1.db
dc_shell -f shifter.job
cmux2x1.db: cmux2x1.v
dc_shell -f cmux2x1.job
smartnic_pads.db: smartnic_pads.v
dc_shell -f smartnic_pads.job
timing.db: timing.v
dc_shell -f timing.job
xmac_receiver.sedif: xmac_receiver.db fifo_sp.db fifo_sp.db xmac_receive_interface.db xmac_receive_interface.db
dc_shell -f xmac_receiver.job
xmac_receiver.db: xmac_receiver.v fifo_sp.v fifo_sp.db xmac_receive_interface.v xmac_receive_interface.db
dc_shell -f xmac_receiver.job
fifo_sp.db: fifo_sp.v
dc_shell -f fifo_sp.job
xmac_receive_interface.db: xmac_receive_interface.v
dc_shell -f xmac_receive_interface.job
xmac_transmit_interface.db: xmac_transmit_interface.v
dc_shell -f xmac_transmit_interface.job
zeroone.db: zeroone.v
dc_shell -f zeroone.job
muxf5_32.db: muxf5_32.v
dc_shell -f muxf5_32.job
Synopsys Directives
There are several top file directives which support Synopsys. These are,
Common Directives
These directives are used with both Synplify, Synopsys as well as the Xilinx place and route tools.
Precision
HDLmaker creates a Mentor Precision project file (.psp) when the -precision switch is used.
|