Skip to content

Commit 2d70b44

Browse files
committed
Improved config file; All common library files are in one location(data/); Clean up;
1 parent 248ae4d commit 2d70b44

12 files changed

+976
-136
lines changed

Diff for: README.md

+14
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,20 @@ std blif (.blif) -> SFQ blif (.blif)
5858
* Convert LEF/DEF to GDS
5959
* Convert LEF/DEF to JoSIM
6060

61+
62+
63+
## Required files
64+
65+
| **File** | **Description** | Required by |
66+
| ----------- | ------------------------- | --------------------------- |
67+
| .genlib | logic gate description | ABC(ViPeR) |
68+
| .toml | physical gate description | ViPeR |
69+
| .cfg | qRouter config | qRouter |
70+
| .lef | standard gate description | qRouter, Die2Sim, chipSmith |
71+
| config.toml | configuration for ViPeR | ViPeR |
72+
73+
74+
6175
## Examples
6276
Examples of how to execute ViPeR:
6377

Diff for: ViPer_Notes.md

+33-22
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,18 @@ If splitters are inserted first, its a huge mess. The circuit has to be cleaned
4343

4444
Stacking all possible routes including splitters.
4545

46-
Must investigate the order of the stacking
46+
47+
48+
#### Order of priority if sorting:
49+
50+
* predefined input order
51+
* predefined output order
52+
* longest route
53+
54+
#### Sorting
55+
56+
* Creating subsets per priority
57+
* use insertion for sorting per subset
4758

4859
### Layout
4960

@@ -84,34 +95,34 @@ Look for widest row, calculate each row length. divide by the number of gaps, ad
8495
### config file
8596

8697
**Route Segment Cost** *value*
87-
8898

89-
Cost of a route of the length of one track pitch on any metal layer in the preferred direction of the route layer. This should be the lowest of all the costs. Default value 2.
99+
100+
Cost of a route of the length of one track pitch on any metal layer in the preferred direction of the route layer. This should be the lowest of all the costs. Default value 2.
90101

91102
**Route Via Cost** *value*
92-
93103

94-
Cost to switch routing layers up or down using a via. Default value 10.
104+
105+
Cost to switch routing layers up or down using a via. Default value 10.
95106

96107
**Route Jog Cost** *value*
97-
98108

99-
Cost of a route of the length of one track pitch on any metal layer against the preferred direction of the route layer. This cost should be relatively high; however, it should be less than (Route Segment Cost + 2 * Route Via Cost) to allow a jog of a single track pitch to be preferred over switching to another layer. Default value 20.
109+
110+
Cost of a route of the length of one track pitch on any metal layer against the preferred direction of the route layer. This cost should be relatively high; however, it should be less than (Route Segment Cost + 2 * Route Via Cost) to allow a jog of a single track pitch to be preferred over switching to another layer. Default value 20.
100111

101112
**Route Crossover Cost** *value*
102-
103113

104-
Cost of routing directly over or under an unrouted pin connection to a cell. This helps prevent pins from getting boxed in before they are routed, making them unroutable. Default value 8.
114+
115+
Cost of routing directly over or under an unrouted pin connection to a cell. This helps prevent pins from getting boxed in before they are routed, making them unroutable. Default value 8.
105116

106117
**Route Block Cost** *value*
107-
108118

109-
Cost of routing directly over or under an unrouted pin connection to a cell, when that connection is the only available vertical connection to the pin. Default value 25.
119+
120+
Cost of routing directly over or under an unrouted pin connection to a cell, when that connection is the only available vertical connection to the pin. Default value 25.
110121

111122
**Route Collision Cost** *value*
112-
113123

114-
Cost of shorting another net. This happens during the second routing stage. All nets that are shorted by this net will have to be ripped up and rerouted. The value should be large to avoid a large number of existing routes needing to be ripped up. Default value 50.
124+
125+
Cost of shorting another net. This happens during the second routing stage. All nets that are shorted by this net will have to be ripped up and rerouted. The value should be large to avoid a large number of existing routes needing to be ripped up. Default value 50.
115126

116127

117128

@@ -122,21 +133,21 @@ Cost of shorting another net. This happens during the second routing stage. A
122133
[TRACKS
123134
[{X | Y} start DO numtracks STEP space
124135
[LAYER layerName ...]
125-
;] ...]
136+
;] ...]
126137

127-
Defines the routing grid for a standard cell-based design.
138+
Defines the routing grid for a standard cell-based design.
128139
The track spacing is the PITCH value for the layer defined in LEF.
129140

130-
-{X | Y} start
131-
Specifies the location and direction of the first track defined. X indicates vertical lines; Y indicates horizontal lines.
132-
start is the X or Y coordinate of the first line.
133-
For example, X 3000 creates a set of vertical lines, with the first line going through (3000 0).
141+
-{X | Y} start
142+
Specifies the location and direction of the first track defined. X indicates vertical lines; Y indicates horizontal lines.
143+
start is the X or Y coordinate of the first line.
144+
For example, X 3000 creates a set of vertical lines, with the first line going through (3000 0).
134145

135-
DO numTracks
146+
DO numTracks
136147
Specifies the number of tracks to create for the grid. You cannot specify 0 numtracks.
137148

138-
-STEP space
149+
-STEP space
139150
Specifies the spacing between the tracks.
140151

141-
-LAYER layerName
152+
-LAYER layerName
142153
Specifies the routing layer used for the tracks. You can specify more than one layer.

Diff for: config.toml

+44-40
Original file line numberDiff line numberDiff line change
@@ -10,49 +10,53 @@
1010
# version = 0.1
1111

1212
[run_parameters]
13-
Command = "blif2gds" # verilog2gds; blif2gds; runABC; gdf2lef;
14-
15-
# Working directory, all file names will be referenced with this
16-
# work_dir = "data/adder3bit/"
17-
# work_dir = "data/adder6bit/"
18-
work_dir = "data/rca2/"
19-
# work_dir = "data/KSA/4/"
20-
21-
gds_file = "outGDS.gds" # GDS file to be created
22-
# blif_file = "adder3bit.blif" # Standard blif that will be converted to SFQblif
23-
# blif_file = "adder6bit.blif" # Standard blif that will be converted to SFQblif
24-
# blif_file = "KSA4.blif" # Standard blif that will be converted to SFQblif
25-
blif_file = "rca2.blif" # Standard blif that will be converted to SFQblif
26-
# sfqblif_file = "" # The SFQblif file that will be converted to GDS
27-
# veri_file = "KSA4.v" # Verilog file for ABC to convert to a standard blif
28-
# cell_dis = "LSmitll.genlib" # cell/gate description for ABC
29-
cell_dis_gds = "LSmitll_cell_lib.toml"
30-
# NOTE: all directories are relative to the current directory
31-
32-
33-
# Converting a GDF(Gate Definition File) to LEF
34-
# cell_dis_gds = "LSmitll_cell_lib.toml"fg
35-
lef_file = "SUN.lef"
36-
37-
[Layout_parameters]
38-
input_order = ["a0", "b0", "clk", "a1", "b1"]
39-
output_order = ["s0", "s1", "s2"]
40-
41-
[wafer_parameters]
13+
# Command = "blif2gds"
14+
Command = "gdf2lef"
15+
# Command = "verilog2gds"
16+
# Command = "runABC"
17+
18+
19+
[Circuit_Files]
20+
# work_dir = "data/.../" # Working directory, all file names will be referenced with this
21+
# blif_file = ".blif" # Standard blif that will be converted to SFQblif
22+
# veri_file = ".v" # Verilog file for ABC to convert to a standard blif
23+
24+
gds_file = "outGDS.gds" # GDS file to be created
25+
26+
# work_dir = "data/adder3bit/"
27+
# blif_file = "adder3bit.blif"
28+
29+
# work_dir = "data/adder6bit/"
30+
# blif_file = "adder6bit.blif"
31+
32+
# work_dir = "data/rca2/"
33+
# blif_file = "rca2.blif"
34+
35+
work_dir = "data/KSA4/"
36+
blif_file = "KSA4.blif"
37+
# veri_file = "KSA4.v"
38+
39+
40+
[General_Config_File]
41+
cell_dis = "data/LSmitll.genlib" # Logic cell/gate description for ABC
42+
cell_dis_gds = "data/LSmitll_cell_lib.toml" # Homebrewed description for physical cell layout
43+
lef_file = "data/SUNobs.lef" # Used for converting a GDF(Gate Definition File) to LEF
44+
45+
[Layout_Parameters]
46+
# RCA2
47+
# input_order = ["a0", "b0", "a1", "b1"]
48+
# output_order = ["s0", "s1", "s2"]
49+
50+
# KSA4
51+
input_order = ["cin", "a0", "b0", "a1", "b1", "a2", "b2", "a3", "b3"]
52+
output_order = ["sum0", "sum1", "sum2", "sum3", "cout"]
53+
54+
[Wafer_Parameters]
4255
x_offset = 5
4356
y_offset = 5
4457
vertical_gap = 0 # Spacing between cells
4558
horizontal_gap = 40 # Spacing between cells
4659
cell_height = 50 # The height of the cells
47-
row_align = "left" # Row alignment {left, centre, justify}
60+
row_align = "left" # Row alignment {left, centre, justify}
4861
pad_ver_gap = 35 # The vertical distance between the pads and the gates/circuit
49-
pad_hor_gap = 10 # the horizontal gap between the pins/pads
50-
51-
52-
# [NOTES]
53-
# ALL MEASUREMENTS are in um.
54-
# Pin location is at the CENTRE of the port.
55-
# Routing connection to the pin must be a PTL on layer M3 with M2 and M4 as shielding groundplanes.
56-
# The biasing pillars are on layer M5.
57-
# Pillars are considered as obstructions.
58-
# The the names for the gates in the .genlib file must match the gates of the gates in the runParameter.toml(this) file
62+
pad_hor_gap = 10 # the horizontal gap between the pins/pads

0 commit comments

Comments
 (0)