najaeda 0.1.22__cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of najaeda might be problematic. Click here for more details.

Files changed (40) hide show
  1. najaeda/__init__.py +0 -0
  2. najaeda/docs/.readthedocs.yaml +26 -0
  3. najaeda/docs/requirements.txt +7 -0
  4. najaeda/docs/source/api.rst +7 -0
  5. najaeda/docs/source/common_classes.rst +11 -0
  6. najaeda/docs/source/conf.py +57 -0
  7. najaeda/docs/source/equipotential.rst +15 -0
  8. najaeda/docs/source/examples.rst.in +66 -0
  9. najaeda/docs/source/index.rst +17 -0
  10. najaeda/docs/source/instance.rst +19 -0
  11. najaeda/docs/source/introduction.rst +53 -0
  12. najaeda/docs/source/net.rst +20 -0
  13. najaeda/docs/source/netlist_classes.rst +11 -0
  14. najaeda/docs/source/preprocessor.py +73 -0
  15. najaeda/docs/source/term.rst +20 -0
  16. najaeda/docs/source/visitors.rst +13 -0
  17. najaeda/instance_visitor.py +43 -0
  18. najaeda/libnaja_bne.so +0 -0
  19. najaeda/libnaja_dnl.so +0 -0
  20. najaeda/libnaja_nl.so +0 -0
  21. najaeda/libnaja_opt.so +0 -0
  22. najaeda/libnaja_python.so +0 -0
  23. najaeda/naja.so +0 -0
  24. najaeda/native/__init__.py +0 -0
  25. najaeda/native/stats.py +341 -0
  26. najaeda/net_visitor.py +53 -0
  27. najaeda/netlist.py +1576 -0
  28. najaeda/pandas_stats.py +32 -0
  29. najaeda/primitives/__init__.py +0 -0
  30. najaeda/primitives/xilinx.py +454 -0
  31. najaeda/stats.py +413 -0
  32. najaeda-0.1.22.dist-info/METADATA +79 -0
  33. najaeda-0.1.22.dist-info/RECORD +40 -0
  34. najaeda-0.1.22.dist-info/WHEEL +6 -0
  35. najaeda-0.1.22.dist-info/licenses/AUTHORS +7 -0
  36. najaeda-0.1.22.dist-info/licenses/LICENSE +201 -0
  37. najaeda.libs/libcapnp-1-d562dcbf.1.0.so +0 -0
  38. najaeda.libs/libkj-1-fe2e75c4.1.0.so +0 -0
  39. najaeda.libs/libtbb-58378cc2.so.12.15 +0 -0
  40. najaeda.libs/libtbbmalloc-8bd2c113.so.2.15 +0 -0
@@ -0,0 +1,32 @@
1
+ # SPDX-FileCopyrightText: 2023 The Naja authors <https://github.com/najaeda/naja/blob/main/AUTHORS>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ import argparse
6
+ import pandas as pd
7
+
8
+ if __name__ == "__main__":
9
+ parser = argparse.ArgumentParser(
10
+ description="Load JSON and generate statistics using Pandas."
11
+ )
12
+ parser.add_argument("json_file", type=str, help="Path to the input JSON file.")
13
+ parser.add_argument(
14
+ "--output",
15
+ type=str,
16
+ default="design_stats.png",
17
+ help="Optional: Save computed statistics to this JSON file.",
18
+ )
19
+ args = parser.parse_args()
20
+
21
+ df = pd.read_json(args.json_file)
22
+ pandas_data = pd.DataFrame(df.set_index("Name"))
23
+ plot = pandas_data.plot.bar(y=["terms", "nets", "instances"], stacked=True)
24
+
25
+ # Customize plot
26
+ plot.set_title("Design Statistics", fontsize=16, fontweight="bold")
27
+ plot.set_xlabel("Design Name", fontsize=12)
28
+ plot.set_ylabel("Count", fontsize=12)
29
+
30
+ plot_figure = plot.get_figure()
31
+ plot_figure.tight_layout()
32
+ plot_figure.savefig(args.output)
File without changes
@@ -0,0 +1,454 @@
1
+ # SPDX-FileCopyrightText: 2024 The Naja authors <https://github.com/najaeda/naja/blob/main/AUTHORS>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ import logging
6
+ from najaeda import naja
7
+
8
+
9
+ def constructIBUF(lib):
10
+ ibuf = naja.SNLDesign.createPrimitive(lib, "IBUF")
11
+ i = naja.SNLScalarTerm.create(ibuf, naja.SNLTerm.Direction.Input, "I")
12
+ o = naja.SNLScalarTerm.create(ibuf, naja.SNLTerm.Direction.Output, "O")
13
+ ibuf.addCombinatorialArcs(i, o)
14
+
15
+
16
+ def constructOBUF(lib):
17
+ obuf = naja.SNLDesign.createPrimitive(lib, "OBUF")
18
+ i = naja.SNLScalarTerm.create(obuf, naja.SNLTerm.Direction.Input, "I")
19
+ o = naja.SNLScalarTerm.create(obuf, naja.SNLTerm.Direction.Output, "O")
20
+ obuf.addCombinatorialArcs(i, o)
21
+
22
+
23
+ def constructBUFG(lib):
24
+ bufg = naja.SNLDesign.createPrimitive(lib, "BUFG")
25
+ i = naja.SNLScalarTerm.create(bufg, naja.SNLTerm.Direction.Input, "I")
26
+ o = naja.SNLScalarTerm.create(bufg, naja.SNLTerm.Direction.Output, "O")
27
+ bufg.addCombinatorialArcs(i, o)
28
+
29
+
30
+ def constructDSP48E1(lib):
31
+ dsp48e1 = naja.SNLDesign.createPrimitive(lib, "DSP48E1")
32
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Output, 29, 0, "ACOUT")
33
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Output, 17, 0, "BCOUT")
34
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Output, "CARRYCASCOUT")
35
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "MULTSIGNOUT")
36
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 47, 0, "PCOUT")
37
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Output, "OVERFLOW")
38
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Output, "PATTERNBDETECT")
39
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Output, "PATTERNDETECT")
40
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Output, "UNDERFLOW")
41
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Output, 3, 0, "CARRYOUT")
42
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Output, 47, 0, "P")
43
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 29, 0, "ACIN")
44
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 17, 0, "BCIN")
45
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CARRYCASCIN")
46
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "MULTSIGNIN")
47
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 47, 0, "PCIN")
48
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 3, 0, "ALUMODE")
49
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 2, 0, "CARRYINSEL")
50
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CLK")
51
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 4, 0, "INMODE")
52
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 6, 0, "OPMODE")
53
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 29, 0, "A")
54
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 17, 0, "B")
55
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 47, 0, "C")
56
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CARRYIN")
57
+ naja.SNLBusTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, 24, 0, "D")
58
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CEA1")
59
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CEA2")
60
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CEAD")
61
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CEALUMODE")
62
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CEB1")
63
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CEB2")
64
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CEC")
65
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CECARRYIN")
66
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CECTRL")
67
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CED")
68
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CEINMODE")
69
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CEM")
70
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "CEP")
71
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "RSTA")
72
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "RSTALLCARRYIN")
73
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "RSTALUMODE")
74
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "RSTB")
75
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "RSTC")
76
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "RSTCTRL")
77
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "RSTD")
78
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "RSTINMODE")
79
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "RSTM")
80
+ naja.SNLScalarTerm.create(dsp48e1, naja.SNLTerm.Direction.Input, "RSTP")
81
+ naja.SNLParameter.create_decimal(dsp48e1, "ACASCREG", 1)
82
+ naja.SNLParameter.create_decimal(dsp48e1, "ADREG", 1)
83
+ naja.SNLParameter.create_string(dsp48e1, "A_INPUT", "DIRECT")
84
+ naja.SNLParameter.create_decimal(dsp48e1, "ALUMODEREG", 1)
85
+ naja.SNLParameter.create_decimal(dsp48e1, "AREG", 1)
86
+ naja.SNLParameter.create_decimal(dsp48e1, "BCASCREG", 1)
87
+ naja.SNLParameter.create_string(dsp48e1, "B_INPUT", "DIRECT")
88
+ naja.SNLParameter.create_decimal(dsp48e1, "BREG", 1)
89
+ naja.SNLParameter.create_decimal(dsp48e1, "CARRYINREG", 1)
90
+ naja.SNLParameter.create_decimal(dsp48e1, "CARRYINSELREG", 1)
91
+ naja.SNLParameter.create_decimal(dsp48e1, "CREG", 1)
92
+ naja.SNLParameter.create_decimal(dsp48e1, "DREG", 1)
93
+ naja.SNLParameter.create_decimal(dsp48e1, "INMODEREG", 1)
94
+ naja.SNLParameter.create_decimal(dsp48e1, "MREG", 1)
95
+ naja.SNLParameter.create_decimal(dsp48e1, "OPMODEREG", 1)
96
+ naja.SNLParameter.create_decimal(dsp48e1, "PREG", 1)
97
+ naja.SNLParameter.create_boolean(dsp48e1, "USE_DPORT", False)
98
+ naja.SNLParameter.create_string(dsp48e1, "USE_MULT", "MULTIPLY")
99
+ naja.SNLParameter.create_string(dsp48e1, "USE_SIMD", "ONE48")
100
+
101
+
102
+ def constructINV(lib):
103
+ inv = naja.SNLDesign.createPrimitive(lib, "INV")
104
+ i = naja.SNLScalarTerm.create(inv, naja.SNLTerm.Direction.Input, "I")
105
+ o = naja.SNLScalarTerm.create(inv, naja.SNLTerm.Direction.Output, "O")
106
+ naja.SNLDesign.addCombinatorialArcs(i, o)
107
+
108
+
109
+ def constructCARRY4(lib):
110
+ carry4 = naja.SNLDesign.createPrimitive(lib, "CARRY4")
111
+ o = naja.SNLBusTerm.create(carry4, naja.SNLTerm.Direction.Output, 3, 0, "O")
112
+ co = naja.SNLBusTerm.create(carry4, naja.SNLTerm.Direction.Output, 3, 0, "CO")
113
+ di = naja.SNLBusTerm.create(carry4, naja.SNLTerm.Direction.Input, 3, 0, "DI")
114
+ s = naja.SNLBusTerm.create(carry4, naja.SNLTerm.Direction.Input, 3, 0, "S")
115
+ cyinit = naja.SNLScalarTerm.create(carry4, naja.SNLTerm.Direction.Input, "CYINIT")
116
+ ci = naja.SNLScalarTerm.create(carry4, naja.SNLTerm.Direction.Input, "CI")
117
+ o_bits = [b for b in o.getBits()]
118
+ co_bits = [b for b in co.getBits()]
119
+ di_bits = [b for b in di.getBits()]
120
+ s_bits = [b for b in s.getBits()]
121
+ # cyinit and ci are in combinatorial dependency with o and co outputs
122
+ naja.SNLDesign.addCombinatorialArcs([cyinit, ci], [o, co])
123
+ naja.SNLDesign.addCombinatorialArcs(s_bits[0], [o, co])
124
+ naja.SNLDesign.addCombinatorialArcs(s_bits[1], [o_bits[1], o_bits[2], o_bits[3]])
125
+ naja.SNLDesign.addCombinatorialArcs(s_bits[1], [co_bits[1], co_bits[2], co_bits[3]])
126
+ naja.SNLDesign.addCombinatorialArcs(s_bits[2], [o_bits[2], o_bits[3]])
127
+ naja.SNLDesign.addCombinatorialArcs(s_bits[2], [co_bits[2], co_bits[3]])
128
+ naja.SNLDesign.addCombinatorialArcs(s_bits[3], o_bits[3])
129
+ naja.SNLDesign.addCombinatorialArcs(s_bits[3], co_bits[3])
130
+ naja.SNLDesign.addCombinatorialArcs(di_bits[0], [o_bits[1], o_bits[2], o_bits[3]])
131
+ naja.SNLDesign.addCombinatorialArcs(di_bits[0], co)
132
+ naja.SNLDesign.addCombinatorialArcs(di_bits[1], [o_bits[2], o_bits[3]])
133
+ naja.SNLDesign.addCombinatorialArcs(di_bits[1], [co_bits[1], co_bits[2], co_bits[3]])
134
+ naja.SNLDesign.addCombinatorialArcs(di_bits[2], o_bits[3])
135
+ naja.SNLDesign.addCombinatorialArcs(di_bits[2], [co_bits[2], co_bits[3]])
136
+ naja.SNLDesign.addCombinatorialArcs(di_bits[3], co_bits[3])
137
+
138
+
139
+ def constructLUT1(lib):
140
+ lut1 = naja.SNLDesign.createPrimitive(lib, "LUT1")
141
+ i0 = naja.SNLScalarTerm.create(lut1, naja.SNLTerm.Direction.Input, "I0")
142
+ o = naja.SNLScalarTerm.create(lut1, naja.SNLTerm.Direction.Output, "O")
143
+ naja.SNLDesign.addCombinatorialArcs(i0, o)
144
+ naja.SNLParameter.create_binary(lut1, "INIT", 2, 0b00)
145
+
146
+
147
+ def constructLUT2(lib):
148
+ lut2 = naja.SNLDesign.createPrimitive(lib, "LUT2")
149
+ i0 = naja.SNLScalarTerm.create(lut2, naja.SNLTerm.Direction.Input, "I0")
150
+ i1 = naja.SNLScalarTerm.create(lut2, naja.SNLTerm.Direction.Input, "I1")
151
+ o = naja.SNLScalarTerm.create(lut2, naja.SNLTerm.Direction.Output, "O")
152
+ naja.SNLDesign.addCombinatorialArcs([i0, i1], o)
153
+ naja.SNLParameter.create_binary(lut2, "INIT", 4, 0x0)
154
+
155
+
156
+ def constructLUT3(lib):
157
+ lut3 = naja.SNLDesign.createPrimitive(lib, "LUT3")
158
+ i0 = naja.SNLScalarTerm.create(lut3, naja.SNLTerm.Direction.Input, "I0")
159
+ i1 = naja.SNLScalarTerm.create(lut3, naja.SNLTerm.Direction.Input, "I1")
160
+ i2 = naja.SNLScalarTerm.create(lut3, naja.SNLTerm.Direction.Input, "I2")
161
+ o = naja.SNLScalarTerm.create(lut3, naja.SNLTerm.Direction.Output, "O")
162
+ naja.SNLDesign.addCombinatorialArcs([i0, i1, i2], o)
163
+ naja.SNLParameter.create_binary(lut3, "INIT", 8, 0x00)
164
+
165
+
166
+ def constructLUT4(lib):
167
+ lut4 = naja.SNLDesign.createPrimitive(lib, "LUT4")
168
+ i0 = naja.SNLScalarTerm.create(lut4, naja.SNLTerm.Direction.Input, "I0")
169
+ i1 = naja.SNLScalarTerm.create(lut4, naja.SNLTerm.Direction.Input, "I1")
170
+ i2 = naja.SNLScalarTerm.create(lut4, naja.SNLTerm.Direction.Input, "I2")
171
+ i3 = naja.SNLScalarTerm.create(lut4, naja.SNLTerm.Direction.Input, "I3")
172
+ o = naja.SNLScalarTerm.create(lut4, naja.SNLTerm.Direction.Output, "O")
173
+ naja.SNLDesign.addCombinatorialArcs([i0, i1, i2, i3], o)
174
+ naja.SNLParameter.create_binary(lut4, "INIT", 16, 0x0000)
175
+
176
+
177
+ def constructLUT5(lib):
178
+ lut5 = naja.SNLDesign.createPrimitive(lib, "LUT5")
179
+ i0 = naja.SNLScalarTerm.create(lut5, naja.SNLTerm.Direction.Input, "I0")
180
+ i1 = naja.SNLScalarTerm.create(lut5, naja.SNLTerm.Direction.Input, "I1")
181
+ i2 = naja.SNLScalarTerm.create(lut5, naja.SNLTerm.Direction.Input, "I2")
182
+ i3 = naja.SNLScalarTerm.create(lut5, naja.SNLTerm.Direction.Input, "I3")
183
+ i4 = naja.SNLScalarTerm.create(lut5, naja.SNLTerm.Direction.Input, "I4")
184
+ o = naja.SNLScalarTerm.create(lut5, naja.SNLTerm.Direction.Output, "O")
185
+ naja.SNLDesign.addCombinatorialArcs([i0, i1, i2, i3, i4], o)
186
+ naja.SNLParameter.create_binary(lut5, "INIT", 32, 0x00000000)
187
+
188
+
189
+ def constructLUT6(lib):
190
+ lut6 = naja.SNLDesign.createPrimitive(lib, "LUT6")
191
+ i0 = naja.SNLScalarTerm.create(lut6, naja.SNLTerm.Direction.Input, "I0")
192
+ i1 = naja.SNLScalarTerm.create(lut6, naja.SNLTerm.Direction.Input, "I1")
193
+ i2 = naja.SNLScalarTerm.create(lut6, naja.SNLTerm.Direction.Input, "I2")
194
+ i3 = naja.SNLScalarTerm.create(lut6, naja.SNLTerm.Direction.Input, "I3")
195
+ i4 = naja.SNLScalarTerm.create(lut6, naja.SNLTerm.Direction.Input, "I4")
196
+ i5 = naja.SNLScalarTerm.create(lut6, naja.SNLTerm.Direction.Input, "I5")
197
+ o = naja.SNLScalarTerm.create(lut6, naja.SNLTerm.Direction.Output, "O")
198
+ naja.SNLDesign.addCombinatorialArcs([i0, i1, i2, i3, i4, i5], o)
199
+ naja.SNLParameter.create_binary(lut6, "INIT", 64, 0x0000000000000000)
200
+
201
+
202
+ def constructMUXF7(lib):
203
+ muxf7 = naja.SNLDesign.createPrimitive(lib, "MUXF7")
204
+ i0 = naja.SNLScalarTerm.create(muxf7, naja.SNLTerm.Direction.Input, "I0")
205
+ i1 = naja.SNLScalarTerm.create(muxf7, naja.SNLTerm.Direction.Input, "I1")
206
+ o = naja.SNLScalarTerm.create(muxf7, naja.SNLTerm.Direction.Output, "O")
207
+ s = naja.SNLScalarTerm.create(muxf7, naja.SNLTerm.Direction.Input, "S")
208
+ naja.SNLDesign.addCombinatorialArcs([i0, i1, s], o)
209
+
210
+
211
+ def constructMUXF8(lib):
212
+ muxf8 = naja.SNLDesign.createPrimitive(lib, "MUXF8")
213
+ i0 = naja.SNLScalarTerm.create(muxf8, naja.SNLTerm.Direction.Input, "I0")
214
+ i1 = naja.SNLScalarTerm.create(muxf8, naja.SNLTerm.Direction.Input, "I1")
215
+ o = naja.SNLScalarTerm.create(muxf8, naja.SNLTerm.Direction.Output, "O")
216
+ s = naja.SNLScalarTerm.create(muxf8, naja.SNLTerm.Direction.Input, "S")
217
+ naja.SNLDesign.addCombinatorialArcs([i0, i1, s], o)
218
+
219
+
220
+ def constructSRL16E(lib):
221
+ srl16e = naja.SNLDesign.createPrimitive(lib, "SRL16E")
222
+ naja.SNLScalarTerm.create(srl16e, naja.SNLTerm.Direction.Input, "CE")
223
+ naja.SNLScalarTerm.create(srl16e, naja.SNLTerm.Direction.Input, "CLK")
224
+ naja.SNLScalarTerm.create(srl16e, naja.SNLTerm.Direction.Input, "D")
225
+ naja.SNLScalarTerm.create(srl16e, naja.SNLTerm.Direction.Output, "Q")
226
+ naja.SNLScalarTerm.create(srl16e, naja.SNLTerm.Direction.Input, "A0")
227
+ naja.SNLScalarTerm.create(srl16e, naja.SNLTerm.Direction.Input, "A1")
228
+ naja.SNLScalarTerm.create(srl16e, naja.SNLTerm.Direction.Input, "A2")
229
+ naja.SNLScalarTerm.create(srl16e, naja.SNLTerm.Direction.Input, "A3")
230
+ naja.SNLParameter.create_binary(srl16e, "INIT", 16, 0x0000)
231
+ naja.SNLParameter.create_binary(srl16e, "IS_CLK_INVERTED", 1, 0)
232
+
233
+
234
+ def constructFDCE(lib):
235
+ fdce = naja.SNLDesign.createPrimitive(lib, "FDCE")
236
+ q = naja.SNLScalarTerm.create(fdce, naja.SNLTerm.Direction.Output, "Q")
237
+ c = naja.SNLScalarTerm.create(fdce, naja.SNLTerm.Direction.Input, "C")
238
+ ce = naja.SNLScalarTerm.create(fdce, naja.SNLTerm.Direction.Input, "CE")
239
+ clr = naja.SNLScalarTerm.create(fdce, naja.SNLTerm.Direction.Input, "CLR")
240
+ d = naja.SNLScalarTerm.create(fdce, naja.SNLTerm.Direction.Input, "D")
241
+ naja.SNLParameter.create_binary(fdce, "INIT", 1, 0b0)
242
+ naja.SNLDesign.addInputsToClockArcs([ce, clr, d], c)
243
+ naja.SNLDesign.addClockToOutputsArcs(c, q)
244
+
245
+
246
+ def constructFDPE(lib):
247
+ fdpe = naja.SNLDesign.createPrimitive(lib, "FDPE")
248
+ q = naja.SNLScalarTerm.create(fdpe, naja.SNLTerm.Direction.Output, "Q")
249
+ c = naja.SNLScalarTerm.create(fdpe, naja.SNLTerm.Direction.Input, "C")
250
+ ce = naja.SNLScalarTerm.create(fdpe, naja.SNLTerm.Direction.Input, "CE")
251
+ pre = naja.SNLScalarTerm.create(fdpe, naja.SNLTerm.Direction.Input, "PRE")
252
+ d = naja.SNLScalarTerm.create(fdpe, naja.SNLTerm.Direction.Input, "D")
253
+ naja.SNLParameter.create_binary(fdpe, "INIT", 1, 0b1)
254
+ naja.SNLDesign.addInputsToClockArcs([ce, pre, d], c)
255
+ naja.SNLDesign.addClockToOutputsArcs(c, q)
256
+
257
+
258
+ def constructFDRE(lib):
259
+ fdre = naja.SNLDesign.createPrimitive(lib, "FDRE")
260
+ q = naja.SNLScalarTerm.create(fdre, naja.SNLTerm.Direction.Output, "Q")
261
+ c = naja.SNLScalarTerm.create(fdre, naja.SNLTerm.Direction.Input, "C")
262
+ ce = naja.SNLScalarTerm.create(fdre, naja.SNLTerm.Direction.Input, "CE")
263
+ r = naja.SNLScalarTerm.create(fdre, naja.SNLTerm.Direction.Input, "R")
264
+ d = naja.SNLScalarTerm.create(fdre, naja.SNLTerm.Direction.Input, "D")
265
+ naja.SNLParameter.create_binary(fdre, "INIT", 1, 0b0)
266
+ naja.SNLDesign.addInputsToClockArcs([ce, r, d], c)
267
+ naja.SNLDesign.addClockToOutputsArcs(c, q)
268
+
269
+
270
+ def constructFDSE(lib):
271
+ fdse = naja.SNLDesign.createPrimitive(lib, "FDSE")
272
+ q = naja.SNLScalarTerm.create(fdse, naja.SNLTerm.Direction.Output, "Q")
273
+ c = naja.SNLScalarTerm.create(fdse, naja.SNLTerm.Direction.Input, "C")
274
+ ce = naja.SNLScalarTerm.create(fdse, naja.SNLTerm.Direction.Input, "CE")
275
+ s = naja.SNLScalarTerm.create(fdse, naja.SNLTerm.Direction.Input, "S")
276
+ d = naja.SNLScalarTerm.create(fdse, naja.SNLTerm.Direction.Input, "D")
277
+ naja.SNLParameter.create_binary(fdse, "INIT", 1, 0b0)
278
+ naja.SNLDesign.addInputsToClockArcs([ce, s, d], c)
279
+ naja.SNLDesign.addClockToOutputsArcs(c, q)
280
+
281
+
282
+ def constructRAM32M(lib):
283
+ ram32m = naja.SNLDesign.createPrimitive(lib, "RAM32M")
284
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Output, 1, 0, "DOA")
285
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Output, 1, 0, "DOB")
286
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Output, 1, 0, "DOC")
287
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Output, 1, 0, "DOD")
288
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Input, 4, 0, "ADDRA")
289
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Input, 4, 0, "ADDRB")
290
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Input, 4, 0, "ADDRC")
291
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Input, 4, 0, "ADDRD")
292
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Input, 1, 0, "DIA")
293
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Input, 1, 0, "DIB")
294
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Input, 1, 0, "DIC")
295
+ naja.SNLBusTerm.create(ram32m, naja.SNLTerm.Direction.Input, 1, 0, "DID")
296
+ naja.SNLScalarTerm.create(ram32m, naja.SNLTerm.Direction.Input, "WCLK")
297
+ naja.SNLScalarTerm.create(ram32m, naja.SNLTerm.Direction.Input, "WE")
298
+ naja.SNLParameter.create_binary(ram32m, "INIT_A", 64, 0)
299
+ naja.SNLParameter.create_binary(ram32m, "INIT_B", 64, 0)
300
+ naja.SNLParameter.create_binary(ram32m, "INIT_C", 64, 0)
301
+ naja.SNLParameter.create_binary(ram32m, "INIT_D", 64, 0)
302
+
303
+
304
+ def constructRAM64M(lib):
305
+ ram64m = naja.SNLDesign.createPrimitive(lib, "RAM64M")
306
+ naja.SNLScalarTerm.create(ram64m, naja.SNLTerm.Direction.Output, "DOA")
307
+ naja.SNLScalarTerm.create(ram64m, naja.SNLTerm.Direction.Output, "DOB")
308
+ naja.SNLScalarTerm.create(ram64m, naja.SNLTerm.Direction.Output, "DOC")
309
+ naja.SNLScalarTerm.create(ram64m, naja.SNLTerm.Direction.Output, "DOD")
310
+ naja.SNLBusTerm.create(ram64m, naja.SNLTerm.Direction.Input, 5, 0, "ADDRA")
311
+ naja.SNLBusTerm.create(ram64m, naja.SNLTerm.Direction.Input, 5, 0, "ADDRB")
312
+ naja.SNLBusTerm.create(ram64m, naja.SNLTerm.Direction.Input, 5, 0, "ADDRC")
313
+ naja.SNLBusTerm.create(ram64m, naja.SNLTerm.Direction.Input, 5, 0, "ADDRD")
314
+ naja.SNLScalarTerm.create(ram64m, naja.SNLTerm.Direction.Input, "DIA")
315
+ naja.SNLScalarTerm.create(ram64m, naja.SNLTerm.Direction.Input, "DIB")
316
+ naja.SNLScalarTerm.create(ram64m, naja.SNLTerm.Direction.Input, "DIC")
317
+ naja.SNLScalarTerm.create(ram64m, naja.SNLTerm.Direction.Input, "DID")
318
+ naja.SNLScalarTerm.create(ram64m, naja.SNLTerm.Direction.Input, "WCLK")
319
+ naja.SNLScalarTerm.create(ram64m, naja.SNLTerm.Direction.Input, "WE")
320
+ naja.SNLParameter.create_binary(ram64m, "INIT_A", 64, 0)
321
+ naja.SNLParameter.create_binary(ram64m, "INIT_B", 64, 0)
322
+ naja.SNLParameter.create_binary(ram64m, "INIT_C", 64, 0)
323
+ naja.SNLParameter.create_binary(ram64m, "INIT_D", 64, 0)
324
+
325
+
326
+ def constructRAMB18E1(lib):
327
+ ramb18e1 = naja.SNLDesign.createPrimitive(lib, "RAMB18E1")
328
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, 13, 0, "ADDRARDADDR")
329
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, 13, 0, "ADDRBWRADDR")
330
+ naja.SNLScalarTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, "CLKARDCLK")
331
+ naja.SNLScalarTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, "CLKBWRCLK")
332
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, 15, 0, "DIADI")
333
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, 15, 0, "DIBDI")
334
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, 1, 0, "DIPADIP")
335
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, 1, 0, "DIPBDIP")
336
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Output, 15, 0, "DOADO")
337
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Output, 15, 0, "DOBDO")
338
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Output, 1, 0, "DOPADOP")
339
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Output, 1, 0, "DOPBDOP")
340
+ naja.SNLScalarTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, "ENARDEN")
341
+ naja.SNLScalarTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, "ENBWREN")
342
+ naja.SNLScalarTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, "REGCEAREGCE")
343
+ naja.SNLScalarTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, "REGCEB")
344
+ naja.SNLScalarTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, "RSTRAMARSTRAM")
345
+ naja.SNLScalarTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, "RSTRAMB")
346
+ naja.SNLScalarTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, "RSTREGARSTREG")
347
+ naja.SNLScalarTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, "RSTREGB")
348
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, 1, 0, "WEA")
349
+ naja.SNLBusTerm.create(ramb18e1, naja.SNLTerm.Direction.Input, 3, 0, "WEBWE")
350
+ naja.SNLParameter.create_decimal(ramb18e1, "DOA_REG", 0)
351
+ naja.SNLParameter.create_decimal(ramb18e1, "DOB_REG", 0)
352
+ naja.SNLParameter.create_binary(ramb18e1, "INIT_A", 18, 0x00000)
353
+ naja.SNLParameter.create_binary(ramb18e1, "INIT_B", 18, 0x00000)
354
+ for i in range(64):
355
+ paramName = "INIT_" + hex(i)[2:].zfill(2).upper()
356
+ naja.SNLParameter.create_binary(ramb18e1, paramName, 256, 0)
357
+ for i in range(8):
358
+ paramName = "INITP_" + hex(i)[2:].zfill(2).upper()
359
+ naja.SNLParameter.create_binary(ramb18e1, paramName, 256, 0)
360
+ naja.SNLParameter.create_string(ramb18e1, "RAM_MODE", "TDP")
361
+ naja.SNLParameter.create_decimal(ramb18e1, "READ_WIDTH_A", 0)
362
+ naja.SNLParameter.create_decimal(ramb18e1, "READ_WIDTH_B", 0)
363
+ naja.SNLParameter.create_binary(ramb18e1, "SRVAL_A", 18, 0)
364
+ naja.SNLParameter.create_binary(ramb18e1, "SRVAL_B", 18, 0)
365
+ naja.SNLParameter.create_string(ramb18e1, "WRITE_MODE_A", "WRITE_FIRST")
366
+ naja.SNLParameter.create_string(ramb18e1, "WRITE_MODE_B", "WRITE_FIRST")
367
+ naja.SNLParameter.create_decimal(ramb18e1, "WRITE_WIDTH_A", 0)
368
+ naja.SNLParameter.create_decimal(ramb18e1, "WRITE_WIDTH_B", 0)
369
+
370
+
371
+ def constructRAMB36E1(lib):
372
+ ramb36e1 = naja.SNLDesign.createPrimitive(lib, "RAMB36E1")
373
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, 15, 0, "ADDRARDADDR")
374
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, 15, 0, "ADDRBWRADDR")
375
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "CASCADEINA")
376
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "CASCADEINB")
377
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Output, "CASCADEOUTA")
378
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Output, "CASCADEOUTB")
379
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "CLKARDCLK")
380
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "CLKBWRCLK")
381
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Output, "DBITERR")
382
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, 31, 0, "DIADI")
383
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, 31, 0, "DIBDI")
384
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, 3, 0, "DIPADIP")
385
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, 3, 0, "DIPBDIP")
386
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Output, 31, 0, "DOADO")
387
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Output, 31, 0, "DOBDO")
388
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Output, 3, 0, "DOPADOP")
389
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Output, 3, 0, "DOPBDOP")
390
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Output, 7, 0, "ECCPARITY")
391
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "ENARDEN")
392
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "ENBWREN")
393
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "INJECTDBITERR")
394
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "INJECTSBITERR")
395
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Output, 8, 0, "RDADDRECC")
396
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "REGCEAREGCE")
397
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "REGCEB")
398
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "RSTRAMARSTRAM")
399
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "RSTRAMB")
400
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "RSTREGARSTREG")
401
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, "RSTREGB")
402
+ naja.SNLScalarTerm.create(ramb36e1, naja.SNLTerm.Direction.Output, "SBITERR")
403
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, 3, 0, "WEA")
404
+ naja.SNLBusTerm.create(ramb36e1, naja.SNLTerm.Direction.Input, 7, 0, "WEBWE")
405
+
406
+ naja.SNLParameter.create_decimal(ramb36e1, "DOA_REG", 0)
407
+ naja.SNLParameter.create_decimal(ramb36e1, "DOB_REG", 0)
408
+ naja.SNLParameter.create_binary(ramb36e1, "INIT_A", 36, 0)
409
+ naja.SNLParameter.create_binary(ramb36e1, "INIT_B", 36, 0)
410
+ for i in range(128):
411
+ paramName = "INIT_" + hex(i)[2:].zfill(2).upper()
412
+ naja.SNLParameter.create_binary(ramb36e1, paramName, 256, 0)
413
+ naja.SNLParameter.create_string(ramb36e1, "RAM_EXTENSION_A", "NONE")
414
+ naja.SNLParameter.create_string(ramb36e1, "RAM_EXTENSION_B", "NONE")
415
+ for i in range(16):
416
+ paramName = "INITP_" + hex(i)[2:].zfill(2).upper()
417
+ naja.SNLParameter.create_binary(ramb36e1, paramName, 256, 0)
418
+ naja.SNLParameter.create_string(ramb36e1, "RAM_MODE", "TDP")
419
+ naja.SNLParameter.create_decimal(ramb36e1, "READ_WIDTH_A", 0)
420
+ naja.SNLParameter.create_decimal(ramb36e1, "READ_WIDTH_B", 0)
421
+ naja.SNLParameter.create_decimal(ramb36e1, "WRITE_WIDTH_A", 0)
422
+ naja.SNLParameter.create_decimal(ramb36e1, "WRITE_WIDTH_B", 0)
423
+ naja.SNLParameter.create_binary(ramb36e1, "SRVAL_A", 36, 0)
424
+ naja.SNLParameter.create_binary(ramb36e1, "SRVAL_B", 36, 0)
425
+ naja.SNLParameter.create_string(ramb36e1, "WRITE_MODE_A", "WRITE_FIRST")
426
+ naja.SNLParameter.create_string(ramb36e1, "WRITE_MODE_B", "WRITE_FIRST")
427
+
428
+
429
+ def load(db):
430
+ logging.info("Loading Xilinx primitives")
431
+ lib = naja.NLLibrary.createPrimitives(db, "xilinx")
432
+ constructIBUF(lib)
433
+ constructOBUF(lib)
434
+ constructBUFG(lib)
435
+ constructDSP48E1(lib)
436
+ constructINV(lib)
437
+ constructCARRY4(lib)
438
+ constructLUT1(lib)
439
+ constructLUT2(lib)
440
+ constructLUT3(lib)
441
+ constructLUT4(lib)
442
+ constructLUT5(lib)
443
+ constructLUT6(lib)
444
+ constructMUXF7(lib)
445
+ constructMUXF8(lib)
446
+ constructSRL16E(lib)
447
+ constructFDCE(lib)
448
+ constructFDPE(lib)
449
+ constructFDRE(lib)
450
+ constructFDSE(lib)
451
+ constructRAM32M(lib)
452
+ constructRAM64M(lib)
453
+ constructRAMB18E1(lib)
454
+ constructRAMB36E1(lib)