3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-05-10 17:25:49 +00:00
This commit is contained in:
Dave Anderson 2025-05-07 19:45:26 -07:00 committed by GitHub
commit 788a50b679
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 22 additions and 3 deletions

View file

@ -19,6 +19,8 @@ endmodule
(* blackbox *) (* blackbox *)
module DP16KD (...); module DP16KD (...);
parameter CLKAMUX = "CLKA";
parameter CLKBMUX = "CLKB";
parameter DATA_WIDTH_A = 18; parameter DATA_WIDTH_A = 18;
parameter DATA_WIDTH_B = 18; parameter DATA_WIDTH_B = 18;
parameter REGMODE_A = "NOREG"; parameter REGMODE_A = "NOREG";
@ -215,6 +217,8 @@ endmodule
(* blackbox *) (* blackbox *)
module PDPW16KD (...); module PDPW16KD (...);
parameter CLKRMUX = "CLKR";
parameter CLKWMUX = "CLKW";
parameter DATA_WIDTH_W = 36; parameter DATA_WIDTH_W = 36;
parameter DATA_WIDTH_R = 36; parameter DATA_WIDTH_R = 36;
parameter GSR = "ENABLED"; parameter GSR = "ENABLED";

View file

@ -11,10 +11,11 @@ import re
class Cell: class Cell:
def __init__(self, name, keep=False, port_attrs={}): def __init__(self, name, keep=False, port_attrs={}, extra_params={}):
self.name = name self.name = name
self.keep = keep self.keep = keep
self.port_attrs = port_attrs self.port_attrs = port_attrs
self.extra_params = extra_params
self.found = False self.found = False
class State(Enum): class State(Enum):
@ -120,8 +121,18 @@ devices = [
#Cell("XOR3"), #Cell("XOR3"),
#Cell("XOR4"), #Cell("XOR4"),
#Cell("XOR5"), #Cell("XOR5"),
Cell("DP16KD"), Cell("DP16KD", extra_params={
Cell("PDPW16KD"), # Optional clock inverters, present in prjtrellis data but
# not in Diamond bb models.
"CLKAMUX": "CLKA",
"CLKBMUX": "CLKB",
}),
Cell("PDPW16KD", extra_params={
# Optional clock inverters, present in prjtrellis data but
# not in Diamond bb models.
"CLKWMUX": "CLKW",
"CLKRMUX": "CLKR",
}),
#Cell("DPR16X4C"), #Cell("DPR16X4C"),
#Cell("SPR16X4C"), #Cell("SPR16X4C"),
#Cell("LVDSOB"), #Cell("LVDSOB"),
@ -795,6 +806,10 @@ def xtract_cells_decl(device, cells, dirs, outf):
rng = None rng = None
module_ports.append((kind, rng, port)) module_ports.append((kind, rng, port))
elif l.startswith('parameter ') and state == State.IN_MODULE: elif l.startswith('parameter ') and state == State.IN_MODULE:
if cell.extra_params:
for name, default in sorted(cell.extra_params.items()):
outf.write(' parameter {} = "{}";\n'.format(name, default))
cell.extra_params = None
l = l.strip() l = l.strip()
if l.endswith((';', ',')): if l.endswith((';', ',')):
l = l[:-1] l = l[:-1]