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

#maxfan
#black_box
#synplicity
#write_verilog
#write_vhdl
#resource_sharing_off
#syn_directive
#pipe_off


 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,

#dont_touch
#flatten
#synopsys
#boundary_optimization

 Common Directives
These directives are used with both Synplify, Synopsys as well as the Xilinx place and route tools.
#clock

 Precision
HDLmaker creates a Mentor Precision project file (.psp) when the -precision switch is used.