aboutsummaryrefslogtreecommitdiffstats
path: root/machxo2/examples/write_fasm.py
diff options
context:
space:
mode:
Diffstat (limited to 'machxo2/examples/write_fasm.py')
-rw-r--r--machxo2/examples/write_fasm.py51
1 files changed, 0 insertions, 51 deletions
diff --git a/machxo2/examples/write_fasm.py b/machxo2/examples/write_fasm.py
deleted file mode 100644
index ede8f16b..00000000
--- a/machxo2/examples/write_fasm.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from collections import namedtuple
-
-"""
- write: set to True to enable writing this parameter to FASM
-
- numeric: set to True to write this parameter as a bit array (width>1) or
- single bit (width==1) named after the parameter. Otherwise this
- parameter will be written as `name.value`
-
- width: width of numeric parameter (ignored for non-numeric parameters)
-
- alias: an alternative name for this parameter (parameter name used if alias
- is None)
-"""
-ParameterConfig = namedtuple('ParameterConfig', 'write numeric width alias')
-
-# FIXME use defaults= once Python 3.7 is standard
-ParameterConfig.__new__.__defaults__ = (False, True, 1, None)
-
-
-"""
-Write a design as FASM
-
- ctx: nextpnr context
- paramCfg: map from (celltype, parametername) -> ParameterConfig describing how to write parameters
- f: output file
-"""
-def write_fasm(ctx, paramCfg, f):
- for nname, net in sorted(ctx.nets, key=lambda x: str(x[1].name)):
- print("# Net %s" % nname, file=f)
- for wire, pip in sorted(net.wires, key=lambda x: str(x[1])):
- if pip.pip != "":
- print("%s" % pip.pip, file=f)
- print("", file=f)
- for cname, cell in sorted(ctx.cells, key=lambda x: str(x[1].name)):
- print("# Cell %s at %s" % (cname, cell.bel), file=f)
- for param, val in sorted(cell.params, key=lambda x: str(x)):
- cfg = paramCfg[(cell.type, param)]
- if not cfg.write:
- continue
- fasm_name = cfg.alias if cfg.alias is not None else param
- if cfg.numeric:
- if cfg.width == 1:
- if int(val) != 0:
- print("%s.%s" % (cell.bel, fasm_name), file=f)
- else:
- # Parameters with width >32 are direct binary, otherwise denary
- print("%s.%s[%d:0] = %d'b%s" % (cell.bel, fasm_name, cfg.width-1, cfg.width, val), file=f)
- else:
- print("%s.%s.%s" % (cell.bel, fasm_name, val), file=f)
- print("", file=f) \ No newline at end of file