OpenCores
URL https://opencores.org/ocsvn/pci/pci/trunk

Subversion Repositories pci

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /pci/tags/rel_10/syn
    from Rev 125 to Rev 154
    Reverse comparison

Rev 125 → Rev 154

/scr/cons_vs_umc18.inc
0,0 → 1,42
/* Constraints */
CLK_UNCERTAINTY = 0.1 /* 100 ps */
DFFPQ2_CKQ = 0.2 /* Clk to Q in technology time units */
DFFPQ2_SETUP = 0.1 /* Setup time in technology time units */
 
/* Clocks constraints */
set_clock_skew all_clocks() -uncertainty CLK_UNCERTAINTY
set_dont_touch_network all_clocks()
 
/* Reset constraints */
set_driving_cell -none RST
set_drive 0 RST
set_dont_touch_network RST
 
/* All inputs except reset and clock */
all_inputs_wo_rst_clk = all_inputs() - PCI_CLK - WB_CLK - RST
 
/* Set output delays and load for output signals
*
* All outputs are assumed to go directly into
* external flip-flops for the purpose of this
* synthesis
*/
set_load load_of(umcl18u250t2_typ/DFFPQ2/D) * 4 all_outputs()
 
/* Input delay and driving cell of all inputs
*
* All these signals are assumed to come directly from
* flip-flops for the purpose of this synthesis
*
*/
set_driving_cell -cell DFFPQ2 -pin Q all_inputs_wo_rst_clk
 
/* Set design fanout */
/*
set_max_fanout 10 TOPLEVEL
*/
 
/* Set area constraint */
set_max_area MAX_AREA
 
set_operating_conditions -max WORST -max_library umcl18u250t2_wc
scr/cons_vs_umc18.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/elaborate_design.inc =================================================================== --- scr/elaborate_design.inc (nonexistent) +++ scr/elaborate_design.inc (revision 154) @@ -0,0 +1,10 @@ +/* Set search path for verilog include files */ +search_path = search_path + { RTL_PATH } + { GATE_PATH } + +/* Read verilog files of the PCI IP core */ +if (TOPLEVEL == "TOP") { + elaborate TOPLEVEL +} else { + echo "Non-existing top level." + exit +}
scr/elaborate_design.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/save_design.inc =================================================================== --- scr/save_design.inc (nonexistent) +++ scr/save_design.inc (revision 154) @@ -0,0 +1,5 @@ +/* Save current design using synopsys format */ +write -hierarchy -format db -output GATE_PATH + STAGE + _ + TOPLEVEL + .db + +/* Save current design using verilog format */ +write -hierarchy -format verilog -output GATE_PATH + STAGE + _ + TOPLEVEL + .v
scr/save_design.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/tech_vs_umc18.inc =================================================================== --- scr/tech_vs_umc18.inc (nonexistent) +++ scr/tech_vs_umc18.inc (revision 154) @@ -0,0 +1,16 @@ +/* Set Virtual Silicon UMC 0.18u standard cell library */ + +search_path = {. /projects/libs/Virtual_silicon/UMCL18U250D2_2.1/design_compiler/ /projects/libs/Artisan/artisan_rams/art_hsdp_256x40/} +snps = get_unix_variable("SYNOPSYS") +synthetic_library = { \ + snps + "/libraries/syn/dw01.sldb" \ + snps + "/libraries/syn/dw02.sldb" \ + snps + "/libraries/syn/dw03.sldb" \ + snps + "/libraries/syn/dw04.sldb" \ + snps + "/libraries/syn/dw05.sldb" \ + snps + "/libraries/syn/dw06.sldb" \ + snps + "/libraries/syn/dw07.sldb" } +target_library = { umcl18u250t2_bc.db umcl18u250t2_wc.db art_hsdp_256x40_slow_syn.db art_hsdp_256x40_fast_syn.db} +link_library = target_library + synthetic_library +symbol_library = { umcl18u250t2.sdb } +set_min_library umcl18u250t2_wc.db -min_version umcl18u250t2_bc.db
scr/tech_vs_umc18.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/analyze_design.inc =================================================================== --- scr/analyze_design.inc (nonexistent) +++ scr/analyze_design.inc (revision 154) @@ -0,0 +1,67 @@ +/* Set search path for verilog include files */ +search_path = search_path + { RTL_PATH } + { GATE_PATH } + +/* Read verilog files of the PCI IP core */ +if (TOPLEVEL == "TOP") { + analyze -f verilog pci_bridge32.v + analyze -f verilog mas_load_next_crit.v + analyze -f verilog pci_parity_check.v + analyze -f verilog pci_target_unit.v + analyze -f verilog wb_addr_mux.v + analyze -f verilog cbe_en_crit.v + analyze -f verilog fifo_control.v + analyze -f verilog out_reg.v + analyze -f verilog pci_target32_ad_en_crit.v + analyze -f verilog pci_tpram.v + analyze -f verilog wb_master.v + analyze -f verilog conf_cyc_addr_dec.v + analyze -f verilog frame_crit.v + analyze -f verilog par_cbe_crit.v + analyze -f verilog pci_target32_clk_en.v + analyze -f verilog pciw_fifo_control.v + analyze -f verilog wb_slave.v + analyze -f verilog conf_space.v + analyze -f verilog frame_en_crit.v + analyze -f verilog par_crit.v + analyze -f verilog pci_target32_ctrl_en_crit.v + analyze -f verilog pciw_pcir_fifos.v + analyze -f verilog wb_slave_unit.v + analyze -f verilog frame_load_crit.v + analyze -f verilog pci_bridge32.v + analyze -f verilog pci_target32_devs_crit.v + analyze -f verilog perr_crit.v + analyze -f verilog wbr_fifo_control.v + analyze -f verilog cur_out_reg.v + analyze -f verilog io_mux_en_mult.v + analyze -f verilog pci_decoder.v + analyze -f verilog pci_target32_interface.v + analyze -f verilog perr_en_crit.v + analyze -f verilog wbw_fifo_control.v + analyze -f verilog decoder.v + analyze -f verilog io_mux_load_mux.v + analyze -f verilog pci_in_reg.v + analyze -f verilog pci_target32_load_crit.v + analyze -f verilog serr_crit.v + analyze -f verilog wbw_wbr_fifos.v + analyze -f verilog delayed_sync.v + analyze -f verilog irdy_out_crit.v + analyze -f verilog pci_io_mux.v + analyze -f verilog pci_target32_sm.v + analyze -f verilog serr_en_crit.v + analyze -f verilog delayed_write_reg.v + analyze -f verilog mas_ad_en_crit.v + analyze -f verilog pci_master32_sm.v + analyze -f verilog pci_target32_stop_crit.v + analyze -f verilog synchronizer_flop.v + analyze -f verilog mas_ch_state_crit.v + analyze -f verilog pci_master32_sm_if.v + analyze -f verilog pci_target32_trdy_crit.v + analyze -f verilog top.v + analyze -f verilog pci_rst_int.v + analyze -f verilog sync_module.v + analyze -f verilog wb_tpram.v +} else { + echo "Non-existing top level." + exit +} +
scr/analyze_design.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/reports.inc =================================================================== --- scr/reports.inc (nonexistent) +++ scr/reports.inc (revision 154) @@ -0,0 +1,10 @@ +/* Basic reports */ +report_area > LOG_PATH + STAGE + _ + TOPLEVEL + _area.log +report_timing -nworst 1000 > LOG_PATH + STAGE + _ + TOPLEVEL + _timing.log +report_hierarchy > LOG_PATH + STAGE + _ + TOPLEVEL + _hierarchy.log +report_resources > LOG_PATH + STAGE + _ + TOPLEVEL + _resources.log +report_constraint -all_violators > LOG_PATH + STAGE + _ + TOPLEVEL + _constraint.log +/* +report_power > LOG_PATH + STAGE + _ + TOPLEVEL + _power.log +*/ +
scr/reports.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/top_pci32.scr =================================================================== --- scr/top_pci32.scr (nonexistent) +++ scr/top_pci32.scr (revision 154) @@ -0,0 +1,76 @@ +/* + * User defines for synthesizing RTC IP core + * + */ +TOPLEVEL = TOP +include select_tech.inc +PCI_CLK = CLK +WB_CLK = CLK_I +RST = RST_I +PCI_CLK_PERIOD = 15 /* 66 MHz */ +WB_CLK_PERIOD = 5 /* 200 MHz */ +MAX_AREA = 0 /* Push hard */ +DO_UNGROUP = yes /* yes, no */ +DO_VERIFY = no /* yes, no */ +CHECK = no /* yes, no */ + +/* Set some basic variables related to environment */ +include set_env.inc +STAGE = final + +/* Load libraries */ +include tech_ + TECH + .inc + +/* Load HDL source files */ +/*include read_design.inc > LOG_PATH + read_design_ + TOPLEVEL + .log*/ +include analyze_design.inc > LOG_PATH + analyze_design_ + TOPLEVEL + .log +include elaborate_design.inc > LOG_PATH + elaborate_design_ + TOPLEVEL + .log + +/* Set design top */ +current_design TOPLEVEL + +/* Link all blocks and uniquify them */ +link +uniquify + +if (CHECK == "yes"){ +check_design > LOG_PATH + check_design_ + TOPLEVEL + .log +} + +create_clock WB_CLK -period WB_CLK_PERIOD +create_clock PCI_CLK -period PCI_CLK_PERIOD + +/* Apply PCI constraints */ +include cons_pci_ports.inc +include cons_wb_ports.inc + +/* Apply technology constraints */ +if (TECH == "vs_umc18") { + include cons_vs_umc18.inc +} else if (TECH == "art_umc18") { + include cons_art_umc18.inc +} else { + echo "Error: Unsupported technology" + exit +} + +/* Lets do basic synthesis */ +if (DO_UNGROUP == "yes") { + ungroup -all -flatten +} +compile -boundary_optimization -map_effort low + +/* Dump gate-level from incremental synthesis */ +include save_design.inc + +/* Generate reports for incremental synthesis */ +include reports.inc + +/* Verify design */ +if (DO_VERIFY == "yes") { + compile -no_map -verify > LOG_PATH + verify_ + TOPLEVEL + .log +} + +/* Finish */ +sh date +exit
scr/top_pci32.scr Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/cons_wb_ports.inc =================================================================== --- scr/cons_wb_ports.inc (nonexistent) +++ scr/cons_wb_ports.inc (revision 154) @@ -0,0 +1,24 @@ +set_input_delay -max 2 -clock WB_CLK {SDAT_I} +set_input_delay -max 2 -clock WB_CLK {ADR_I} +set_input_delay -max 2 -clock WB_CLK {SDAT_I} +set_input_delay -max 2 -clock WB_CLK {SEL_I} +set_input_delay -max 2 -clock WB_CLK {CYC_I} +set_input_delay -max 2 -clock WB_CLK {STB_I} +set_input_delay -max 2 -clock WB_CLK {CAB_I} +set_input_delay -max 2 -clock WB_CLK {WE_I} + +set_input_delay -max 2 -clock WB_CLK {MDAT_I} +set_input_delay -max 2 -clock WB_CLK {ACK_I} +set_input_delay -max 2 -clock WB_CLK {ERR_I} +set_input_delay -max 2 -clock WB_CLK {RTY_I} + +set_output_delay -max 2 -clock WB_CLK {SDAT_O} +set_output_delay -max 2 -clock WB_CLK {MDAT_O} +set_output_delay -max 2 -clock WB_CLK {ADR_O} +set_output_delay -max 2 -clock WB_CLK {ACK_O} +set_output_delay -max 2 -clock WB_CLK {ERR_O} +set_output_delay -max 2 -clock WB_CLK {RTY_O} +set_output_delay -max 2 -clock WB_CLK {CYC_O} +set_output_delay -max 2 -clock WB_CLK {CAB_O} +set_output_delay -max 2 -clock WB_CLK {WE_O} +set_output_delay -max 2 -clock WB_CLK {STB_O}
scr/cons_wb_ports.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/select_tech.inc =================================================================== --- scr/select_tech.inc (nonexistent) +++ scr/select_tech.inc (revision 154) @@ -0,0 +1,3 @@ +/* Defaults */ + +TECH = vs_umc18 /* vs_umc18, art_umc18 */
scr/select_tech.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/set_env.inc =================================================================== --- scr/set_env.inc (nonexistent) +++ scr/set_env.inc (revision 154) @@ -0,0 +1,18 @@ +/* Enable Verilog HDL preprocessor */ +hdlin_enable_vpp = true + +/* Set log path */ +LOG_PATH = "../logs/" + +/* Set gate-level netlist path */ +GATE_PATH = "../gate/" + +/* Set RAMS_PATH */ +RAMS_PATH = "../../lib/" + +/* Set RTL source path */ +RTL_PATH = "../../rtl/verilog/" + +/* Optimize adders */ +synlib_model_map_effort = high +hlo_share_effort = medium
scr/set_env.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/cons_pci_ports.inc =================================================================== --- scr/cons_pci_ports.inc (nonexistent) +++ scr/cons_pci_ports.inc (revision 154) @@ -0,0 +1,98 @@ +/* PCI input delay constraints definition*/ +if ( PCI_CLK_PERIOD == 15 ){ + + /* 3ns setup time constraint */ + set_input_delay -max 12 -clock PCI_CLK {AD} + set_input_delay -max 12 -clock PCI_CLK {CBE} + set_input_delay -max 12 -clock PCI_CLK {FRAME} + set_input_delay -max 12 -clock PCI_CLK {IRDY} + set_input_delay -max 12 -clock PCI_CLK {IDSEL} + set_input_delay -max 12 -clock PCI_CLK {DEVSEL} + set_input_delay -max 12 -clock PCI_CLK {TRDY} + set_input_delay -max 12 -clock PCI_CLK {STOP} + set_input_delay -max 12 -clock PCI_CLK {PAR} + set_input_delay -max 12 -clock PCI_CLK {PERR} + + /* 0ns hold time constraints */ + set_input_delay -min 0 -clock PCI_CLK {AD} + set_input_delay -min 0 -clock PCI_CLK {CBE} + set_input_delay -min 0 -clock PCI_CLK {FRAME} + set_input_delay -min 0 -clock PCI_CLK {IRDY} + set_input_delay -min 0 -clock PCI_CLK {IDSEL} + set_input_delay -min 0 -clock PCI_CLK {DEVSEL} + set_input_delay -min 0 -clock PCI_CLK {TRDY} + set_input_delay -min 0 -clock PCI_CLK {STOP} + set_input_delay -min 0 -clock PCI_CLK {PAR} + set_input_delay -min 0 -clock PCI_CLK {PERR} + + /* GNT has 5ns constraint */ + set_input_delay -max 10 -clock PCI_CLK {GNT} + set_input_delay -min 0 -clock PCI_CLK {GNT} + + /* 6ns output delay constraints */ + set_output_delay -max 9 -clock PCI_CLK {AD} + set_output_delay -max 9 -clock PCI_CLK {CBE} + set_output_delay -max 9 -clock PCI_CLK {FRAME} + set_output_delay -max 9 -clock PCI_CLK {IRDY} + set_output_delay -max 9 -clock PCI_CLK {DEVSEL} + set_output_delay -max 9 -clock PCI_CLK {TRDY} + set_output_delay -max 9 -clock PCI_CLK {STOP} + set_output_delay -max 9 -clock PCI_CLK {PAR} + set_output_delay -max 9 -clock PCI_CLK {PERR} + set_output_delay -max 9 -clock PCI_CLK {SERR} + set_output_delay -max 9 -clock PCI_CLK {REQ} + +}else if ( PCI_CLK_PERIOD == 30 ){ + + /* 7ns setup time constraint */ + set_input_delay -max 23 -clock PCI_CLK {AD} + set_input_delay -max 23 -clock PCI_CLK {CBE} + set_input_delay -max 23 -clock PCI_CLK {FRAME} + set_input_delay -max 23 -clock PCI_CLK {IRDY} + set_input_delay -max 23 -clock PCI_CLK {IDSEL} + set_input_delay -max 23 -clock PCI_CLK {DEVSEL} + set_input_delay -max 23 -clock PCI_CLK {TRDY} + set_input_delay -max 23 -clock PCI_CLK {STOP} + set_input_delay -max 23 -clock PCI_CLK {PAR} + set_input_delay -max 23 -clock PCI_CLK {PERR} + + /* 0ns hold time constraints */ + set_input_delay -min 0 -clock PCI_CLK {AD} + set_input_delay -min 0 -clock PCI_CLK {CBE} + set_input_delay -min 0 -clock PCI_CLK {FRAME} + set_input_delay -min 0 -clock PCI_CLK {IRDY} + set_input_delay -min 0 -clock PCI_CLK {IDSEL} + set_input_delay -min 0 -clock PCI_CLK {DEVSEL} + set_input_delay -min 0 -clock PCI_CLK {TRDY} + set_input_delay -min 0 -clock PCI_CLK {STOP} + set_input_delay -min 0 -clock PCI_CLK {PAR} + set_input_delay -min 0 -clock PCI_CLK {PERR} + + /* GNT has 10ns constraint */ + set_input_delay -max 20 -clock PCI_CLK {GNT} + set_input_delay -min 0 -clock PCI_CLK {GNT} + + /* 11ns output delay constraints */ + set_output_delay -max 19 -clock PCI_CLK {AD} + set_output_delay -max 19 -clock PCI_CLK {CBE} + set_output_delay -max 19 -clock PCI_CLK {FRAME} + set_output_delay -max 19 -clock PCI_CLK {IRDY} + set_output_delay -max 19 -clock PCI_CLK {DEVSEL} + set_output_delay -max 19 -clock PCI_CLK {TRDY} + set_output_delay -max 19 -clock PCI_CLK {STOP} + set_output_delay -max 19 -clock PCI_CLK {PAR} + set_output_delay -max 19 -clock PCI_CLK {PERR} + set_output_delay -max 19 -clock PCI_CLK {SERR} + + /* REQ has 12ns output delay constraint */ + set_output_delay -max 12 -clock PCI_CLK {REQ} + +}else{ + echo "Error: Unsupported PCI clock period specified!" + exit +} + +set_false_path -from PCI_CLK -to WB_CLK +set_false_path -from WB_CLK -to PCI_CLK +set_false_path -from {bridge/configuration/*} -to {SDAT_O} +
scr/cons_pci_ports.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/read_design.inc =================================================================== --- scr/read_design.inc (nonexistent) +++ scr/read_design.inc (revision 154) @@ -0,0 +1,66 @@ +/* Set search path for verilog include files */ +search_path = search_path + { RTL_PATH } + { GATE_PATH } + +/* Read verilog files of the PCI IP core */ +if (TOPLEVEL == "TOP") { + read -f verilog pci_bridge32.v + read -f verilog mas_load_next_crit.v + read -f verilog pci_parity_check.v + read -f verilog pci_target_unit.v + read -f verilog wb_addr_mux.v + read -f verilog cbe_en_crit.v + read -f verilog fifo_control.v + read -f verilog out_reg.v + read -f verilog pci_target32_ad_en_crit.v + read -f verilog pci_tpram.v + read -f verilog wb_master.v + read -f verilog conf_cyc_addr_dec.v + read -f verilog frame_crit.v + read -f verilog par_cbe_crit.v + read -f verilog pci_target32_clk_en.v + read -f verilog pciw_fifo_control.v + read -f verilog wb_slave.v + read -f verilog conf_space.v + read -f verilog frame_en_crit.v + read -f verilog par_crit.v + read -f verilog pci_target32_ctrl_en_crit.v + read -f verilog pciw_pcir_fifos.v + read -f verilog wb_slave_unit.v + read -f verilog frame_load_crit.v + read -f verilog pci_bridge32.v + read -f verilog pci_target32_devs_crit.v + read -f verilog perr_crit.v + read -f verilog wbr_fifo_control.v + read -f verilog cur_out_reg.v + read -f verilog io_mux_en_mult.v + read -f verilog pci_decoder.v + read -f verilog pci_target32_interface.v + read -f verilog perr_en_crit.v + read -f verilog wbw_fifo_control.v + read -f verilog decoder.v + read -f verilog io_mux_load_mux.v + read -f verilog pci_in_reg.v + read -f verilog pci_target32_load_crit.v + read -f verilog serr_crit.v + read -f verilog wbw_wbr_fifos.v + read -f verilog delayed_sync.v + read -f verilog irdy_out_crit.v + read -f verilog pci_io_mux.v + read -f verilog pci_target32_sm.v + read -f verilog serr_en_crit.v + read -f verilog delayed_write_reg.v + read -f verilog mas_ad_en_crit.v + read -f verilog pci_master32_sm.v + read -f verilog pci_target32_stop_crit.v + read -f verilog synchronizer_flop.v + read -f verilog mas_ch_state_crit.v + read -f verilog pci_master32_sm_if.v + read -f verilog pci_target32_trdy_crit.v + read -f verilog top.v + read -f verilog pci_rst_int.v + read -f verilog wb_tpram.v +} else { + echo "Non-existing top level." + exit +} +
scr/read_design.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: scr/cons_art_umc18.inc =================================================================== --- scr/cons_art_umc18.inc (nonexistent) +++ scr/cons_art_umc18.inc (revision 154) @@ -0,0 +1,51 @@ +/* Constraints */ +CLK_UNCERTAINTY = 0.1 /* 100 ps */ +DFFHQX2_CKQ = 0.2 /* Clk to Q in technology time units */ +DFFHQX2_SETUP = 0.1 /* Setup time in technology time units */ + +/* Clocks constraints */ +create_clock CLK -period CLK_PERIOD +create_clock ECLK -period CLK_PERIOD +set_clock_skew all_clocks() -uncertainty CLK_UNCERTAINTY +set_dont_touch_network all_clocks() + +/* Reset constraints */ +set_driving_cell -none RST +set_drive 0 RST +set_dont_touch_network RST + +/* All inputs except reset and clock */ +all_inputs_wo_rst_clk = all_inputs() - CLK - RST + +/* Set output delays and load for output signals + * + * All outputs are assumed to go directly into + * external flip-flops for the purpose of this + * synthesis + */ +set_output_delay DFFHQX2_SETUP -clock CLK all_outputs() +set_load load_of(typical/DFFHQX2/D) * 1 all_outputs() + +/* Input delay and driving cell of all inputs + * + * All these signals are assumed to come directly from + * flip-flops for the purpose of this synthesis + * + */ +set_input_delay DFFHQX2_CKQ -clock CLK all_inputs_wo_rst_clk +set_driving_cell -cell DFFHQX2 -pin Q all_inputs_wo_rst_clk + +/* Set design fanout */ +/* +set_max_fanout 10 TOPLEVEL +*/ + +/* Set area constraint */ +set_max_area MAX_AREA + +/* Optimize all near-critical paths to give extra slack for layout */ +c_range = CLK_PERIOD * 0.05 +group_path -critical_range c_range -name CLK -to CLK + +/* Operating conditions */ +set_operating_conditions typical
scr/cons_art_umc18.inc Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.