uwsampl / lakeroad-evaluation Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
To summarize the question, the ExtractOp
only takes a lowbit
as an argument. The highbit
is implicit. This raises to questions:
highbit
determined as lowbit + output_type_size - 1
?lowbit + output_type_size - 1 > input_type_size?
?Her's a summary of ExtractOp
's description and signature
comb.extract (::circt::comb::ExtractOp):
Extract a range of bits into a smaller value, lowBit specifies the lowest bit included.
Syntax:
operation ::= `comb.extract` $input `from` $lowBit attr-dict `:` functional-type($input, $result)
We currently just don't do this.
For example, an integer divider is implemented with a fixed point divider. We pre-synth the fixed point divider, but we don't technically pre-synth the entire integer divider (though it will be mostly/all pre-synthed, because it's just a FP divider).
It's hard because we'd need to start importing modules, which gets messy quickly (try it and you'll see).
We are not presynthesizing memories in Calyx, namely because Calyx's test ecosystem is not set up for it. Calyx's tests depend on being able to look at the internal state of a memory.
It's kind of a lame excuse, but it's pretty important to know that Calyx is still functional, so I really don't want to break the tests permanently.
I looked at using something like the keep
attribute in Verilog, but it doesn't preserve a signal all the way through place and route, which is what we need.
I want to get an end-to-end smoketest done and checked into the eval repo, just for my own sanity. Here's what I wanna do:'
Once we have the data being generated, need to collect into a table.
We need to collect benchmarks for Lakeroad. This will be the primary source of documentation for finding benchmarks.
Possible benchmarks:
The ICmpOp
takes a predicate
argument, and I'm not sure how this is supposed to be interpreted. My guess is that it is just an int code to determine which comparison to run.
I've asked on the CIRCT discord but haven't gotten a response yet.
In the mean time I'm going to generate fresh source for common comparisons:
==
!=
is_zero
is_not_zero
>
>=
<
<=
The task seems to fail in Docker, but I can't replicate on my Mac or on boba.
In the evaluation-results
artifact I'm finding the next/nextpnr logs for lattice but we are not generating the baseline logs. @gussmith23 and I already chatted about this I think, but this is necessary for generating the resource usage and timing tables in the paper.
Currently we're not running the task that generates the Yosys table. I updated our Yosys+Lakeroad fork for the YosysHQ demo, but I haven't updated the eval to work on that updated version of Yosys+LR.
This is potentially a way to build a more robust evaluation. As far as I know, Yosys breaks up a design into subcomponents and then calls ABC on subcomponents to map. We could replace that call to ABC with a call to Lakeroad.
We currently don't use Calyx in the eval, so disable it for now (i.e. in the Docker build)
I ran into this problem a while ago. I started using route_design -release_memory
because the flag prevented a crash in the Docker container. Turns out it prevents a crash because it doesn't run routing at all. Whoops.
Without the flag, we get the crash. So have to investigate this.
Currently blocked by gussmith23/lakeroad#150.
This behavior is misleading/annoying, ideally it would only generate valid Verilog files. This might be an issue for uwsampl/lakeroad instead.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.