WIP: Merges for documentation and to support LIFCL 33/33U#49
WIP: Merges for documentation and to support LIFCL 33/33U#49jdavidberger wants to merge 30 commits intogatecat:mainfrom
Conversation
- Added support for related BELs - Added support to parse compressed bitstreams - Support new device attributes - Support serializing deltas for checkpoint / debugging
…tas; refactor logic for tiletypes which configure adjacent tiles
| This serves as a master listing of each device and metadata associated with that device: | ||
|
|
||
| - packages: Comes from various lattice documentation, can also be seen by looking at the radiant device selection dialog. | ||
| - frame metadata: There are various necessary peices of data here. All are available in the "sysCONFIG Guide for Nexus Platform" document from the lattice website. |
There was a problem hiding this comment.
might be nice to expand this a bit more?
|
|
||
| cfg = FuzzConfig(job="PLCROUTE", device="LIFCL-40", sv="../shared/route_40.v", tiles=["R16C22:PLC"]) | ||
| def run_cfg(device): | ||
| tile = list(tiles.get_tiles_by_tiletype(device, "PLC").keys())[0] |
There was a problem hiding this comment.
there was a degree of caution not to pick a tile too close to the edge of the device because that could falsely cause some extra edge routing to be included, have you checked this?
| "PIOA.SEIO18.BASE_TYPE" => vec![Bel::make_seio18(0)], | ||
| "PIOB.SEIO18.BASE_TYPE" => vec![Bel::make_seio18(1)], | ||
| "PIOA.DIFFIO18.BASE_TYPE" => vec![Bel::make_diffio18()], | ||
| "PIOB.DIFFIO18.BASE_TYPE" => vec![Bel::make_diffio18()], |
There was a problem hiding this comment.
I don't think PIOB.DIFFIO18 should ever happen?
There was a problem hiding this comment.
I don't think so either, will remove
| if in_metadata && self.check_preamble(&COMMENT_END) { | ||
| if curr_meta.len() > 0 { | ||
| self.metadata.push(curr_meta.to_string()); | ||
| if curr_meta.is_ascii() { |
There was a problem hiding this comment.
looks like spaces and tabs got mixed here?
util/fuzz/primitives.py
Outdated
| PinSetting(name="ENCLKOS4", dir="in", desc="Enable E output (CLKOS4). Active high. PLL CIB input.", bits=None), | ||
| PinSetting(name="ENCLKOS5", dir="in", desc="Enable F output (CLKOS5). Active high. PLL CIB input.", bits=None), | ||
| PinSetting(name="FBKCK", dir="in", desc="", bits=None), | ||
| PinSetting(name="LEGACY", dir="in", desc="PLL legacy mode signal. Active high to enter the mode. Enabled by lmmi_legacy fuse. PLL CIB input.", bits=None), |
There was a problem hiding this comment.
I think we shouldn't scrape descriptions from the lattice html unfortunately. It creates a theoretical copyright issue (as this is text rather than just a raw fact about an FPGA) particularly when they often reference weird lattice internal things, even if they're public facing docs.
There was a problem hiding this comment.
I've removed the ones from the primitives.py file, but made it so definitions that get scraped in from the web docs have the lattice descriptions. Not sure if this is good enough or not; easy enough to keep them out altogether if needed though
…t of introspective features using the full node db
… to different api calls
…for merge/commit into db
|
I increased the scope by a decent margin; I added overlays and a general purpose pip solver. Probably the big thing now is making sure the overlays / 000 fuzzer make sense and are documented well enough. |
gatecat
left a comment
There was a problem hiding this comment.
in general looking good, had another glance at this with a few more comments. let me know if anything else is waiting on me!
|
|
||
| ### iptypes | ||
|
|
||
| These files are generated by various fuzzers associated with the given primitive. They map out the relationship between configuration parameters and the bits set in the bitstream. |
There was a problem hiding this comment.
maybe add a note that these specifically relate to configuration in the "IP space" (baseaddrs.json) rather than the main CRAM grid?
| return list(configs.values()) | ||
|
|
||
| configs = create_device_configs("LIFCL-33") + create_device_configs("LIFCL-33U") + create_device_configs("LIFCL-17") + create_device_configs("LIFCL-40") | ||
| # [ |
There was a problem hiding this comment.
we can probably just remove this - it will always be in the git history if it needs fishing out again
| lambda x: dict(arcs_attr=arcs_attr) if x == "YES" else {}, False) | ||
| lambda x: dict(arcs_attr=arcs_attr) if x == "YES" else {}, False, executor=executor) | ||
|
|
||
| # CIBMUXIN -> CIBMUXOUT |
There was a problem hiding this comment.
was there a specific reason for removing this?
There was a problem hiding this comment.
probably instead of moving to unused/ just get rid of this? again it will be around in the git history if needed
| println!("done"); | ||
| debug!("done"); | ||
| } | ||
| LSC_READ_DR_UES => { |
There was a problem hiding this comment.
purely out of interest, when is radiant including this command in a bitstream?
| pub always_on: BTreeSet<ConfigBit>, | ||
| #[serde(default)] | ||
|
|
||
| // Tiletype and relative offset for the tiles that this tiletype configures -- that is, changes in |
There was a problem hiding this comment.
I don't think this comment is quite correct - it seems to just be a relative offset and not a tiletype?
|
|
||
| tiles_at_rc = get_owning_tiles_for_rc(rc) | ||
|
|
||
| tileless_rcs = set(["R37C52_H01E0100", "R73C160_JIVREFI4_IVREF_CORE"]) |
There was a problem hiding this comment.
maybe this should be gated on LIFCL-33[U]? R37C52_H01E0100 could plausibly exist in other devices too and not be weird I think?
The changes here are related to: