-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathenv.SCIC.tcl
148 lines (118 loc) · 3.81 KB
/
env.SCIC.tcl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#
# Env file for a simple accumulator design used in ece484
#
# Retrieve the user's home directory (HOME) and project home directory (PHOME) from environment variables
set HOME $env(HOME)
set PHOME $env(PHOME)
# Specify simulaton mode!!!!!!!
# Simulation mode: rtl, syn, or pnr
set SIM_MODE syn
# Specify basename
set BASENAME SCIC
# Controls what rc_synthesis script does
# Stop after elaborating if true
set RC_ELAB_ONLY false
# Only want to load a design
set RC_LOAD_DSN false
# Only want to load a design
set ENC_LOAD_DSN false
# Let the place and route tool know which modules have been placed and routed
set MODULE_LIST ""
#
# Source the file containing the standard options
# we would like to employ
#
source $env(EDI_TCL_DIR)/defaults.tcl
# ---------------------------------------------------------------------------
# Point to key source directories
set BASE_DIR $SRC/$BASENAME
#
# These files are used for RTL simulations (sim rtl)
# RTL simulations use RTL_VLOG_FILES and RTL_VHDL_FILES lists!!!!
# Use " " so that variables get assigned values
#
set RTL_VLOG_FILES "\
$BASE_DIR/CPU.v \
$BASE_DIR/io_controller.v \
$BASE_DIR/memory_controller.v \
$BASE_DIR/Mux4to1.v \
$BASE_DIR/RAM.v \
$BASE_DIR/ROM.v \
$BASE_DIR/SCIC.v \
"
# These files are used by the synthesis tool
set NET $PHOME/syn_dir/netlists
set SYN_VLOG_FILES $RTL_VLOG_FILES
# Point to the testbench files to be used
set RTL_TB_FILE $BASE_DIR/SCIC_tb.v
set SYN_TB_FILE $BASE_DIR/SCIC_syn_tb.v
set PNR_TB_FILE $BASE_DIR/SCIC_pnr_tb.v
#
# Choreograph RTL compiler flow
#
set RC_TO_DO_LIST { \
$TCL_DIR/rc/rc_synthesis.tcl \
}
# Choreograph encounter flow
# enc_hitkit.tcl performs place and route
# edi2ic converts gdsii file to OA lib
set ENC_TO_DO_LIST { \
$TCL_DIR/enc/enc_hitkit.tcl \
}
# ---------------------------------------------------------------------------
# Floorplanning
# ---------------------------------------------------------------------------
# Set the aspect ratio for the layout
# A values less than 1.0 means wide and not so high!
set ASPECT 1.0
# Establish a boundary outside of the core area
set CORE_TO_BOUND 100
# Utilization is a factor from 0.0 -> 1.0 and can also be thought of as row density
# A small number means more space will be allocated because the rows are less dense
set UTILIZATION 0.4
# Sets spacing between each row of MOSFETs
# Row type can be 1 for every row or 2 for every other row. The spacing is in microns
# Setting this manually can be beneficial to ensuring the router has enough space to route wires
set FP_ROW_SPACING 30
set FP_ROW_TYPE 1
# Pin assignments
set N_PINS {LEDs[0] LEDs[1] LEDs[2] LEDs[3]}
set S_PINS {switches[0] switches[1] switches[2] switches[3]}
set E_PINS {clock}
set W_PINS {reset}
# Spacing in microns between the pins
set N_SPACING 100
set S_SPACING 100
set E_SPACING 100
set W_SPACING 100
# Metal layer that should be used
set N_LAYER 2
set S_LAYER 2
set E_LAYER 3
set W_LAYER 3
# ---------------------------------------------------------------------------
# Power planning
# ---------------------------------------------------------------------------
# For the add power ring command
# Width of the metal as well as the separation between gnd and vdd rings
set CORE_RING_SPACING 1
set CORE_RING_WIDTH 3
set CORE_RING_OFFSET 1
# Desired metal layer for the power rings
set PWR_HORIZ_MET metal1
set PWR_VERT_MET metal2
# Power stripes
set STRIPE_WIDTH 5
set STRIPE_SPACE 300
set STRIPE_LAYER metal2
# Name of OA lib we want to export to
set MY_OA_LIB "ediLib"
# ---------------------------------------------------------------------------
# We need to do something special with the ncvlog opts
# since we don't have an include directory
set NCVLOG_OPTS "-cdslib $CDS_LIB \
-hdlvar $HDL_VAR \
-errormax $ERR_MAX \
-update \
-linedebug \
-status "