29 Mar 2024 |
mumblingdrunkard | Oh that makes total sense. I'm probably coming from the wrong end of the spectrum and thinking about things in terms of component count. Wires are ideal heheh. | 22:09:01 |
jackkoenig (Jack Koenig) | Put another way, the length (and thus capacitance) of wires gets a lot more problematic the smaller your technology. Yeah Wires are not at all ideal these days | 22:09:20 |
jackkoenig (Jack Koenig) | But, your intuition about lots of ports being a problem is right on. Area is less of a concern than routing the wires. It's a HUGE problem with no silver bullet. You just work hard and try to be clever in the microarchitecture to reduce how many ports you need | 22:10:34 |
mumblingdrunkard | Yeah, I still think the optimisation helps a lot, whatever the muxing synthesises to. It was a lot of fun when I finally found a scheme that clicked, and it's so simple. I'm not enough of a maths wizz to prove that it always holds though hahah. | 22:12:33 |
mumblingdrunkard | Thanks a lot for your thoughts. I might try to write about that and correct my assumptions about what efficient synthesis means. | 22:13:10 |
mumblingdrunkard | For more context, I'm working inside the BOOM project, adding load-address prediction on top of some stuff my advisor has worked on. I've been browsing through the code, and I think the scheme I came up with could help with complexity in other predictors too. Maybe I'll get my advisor to push it onto some poor student after I'm gone. | 22:14:59 |
30 Mar 2024 |
| longfangsong (龙方淞) joined the room. | 15:32:52 |
2 Apr 2024 |
| kavskavs joined the room. | 19:41:06 |
kavskavs | Redacted or Malformed Event | 19:42:02 |
kavskavs | * Hi, where can i ask beginner level doubts ( currently going through the https://github.com/schoeberl/chisel-lab/ excercises) | 19:42:47 |
kavskavs | Redacted or Malformed Event | 19:46:41 |
4 Apr 2024 |
hutch31 (Guy Hutchison) | In reply to @jackkoenig-57e1805540f3a6eec0665030:gitter.im Let me preface by saying that I am not an expert here and might be wrong, but I do support designers building high-performance stuff in modern technologies and I'm pretty sure they don't use tri-state at all. You are right that the mux trees would be massive (this can be mitigated a bit as most ASIC technologies provide Mux4 primitives which help a little, although that's more with routing than with area), and the tri-state logic would certainly have fewer wires which helps with routing, but I think you run into drive strength issues with the length of the wire (those tri-state gates have to get pretty big), and the length of time it takes to drive the wire may be just too limiting on your clock speed to make the benefits worth it Also causes problems with the black arts of DFT, hard to find stuck-ats on a multi-driven bus. | 19:03:25 |
6 Apr 2024 |
mumblingdrunkard | Quick question. Does MuxCase prioritize the first match? | 11:59:17 |
7 Apr 2024 |
| unlsycn joined the room. | 02:14:39 |
8 Apr 2024 |
jooyeon111 (jooyeon111) | Redacted or Malformed Event | 04:43:03 |
jooyeon111 (jooyeon111) | I'm trying to generate vcd file in recent version of Chisel. I used to use
test(new MyModule).withAnnotations(Seq(WriteVcdAnnotation))
to generate vcd file. However, recent version of chisel test use "svsim" so i tried
simulate(new MyModule).withAnnotations(Seq(WriteVcdAnnotation))
to generate vcd file. It dose not work well. Which keywords should i use to generate vcd files? Thanks.
| 04:53:40 |
Raffaele Meloni | In reply to @jooyeon111-60d94deb6da03739847fd235:gitter.im
I'm trying to generate vcd file in recent version of Chisel. I used to use
test(new MyModule).withAnnotations(Seq(WriteVcdAnnotation))
to generate vcd file. However, recent version of chisel test use "svsim" so i tried
simulate(new MyModule).withAnnotations(Seq(WriteVcdAnnotation))
to generate vcd file. It dose not work well. Which keywords should i use to generate vcd files? Thanks.
Hi Ephemeral simulator doesn't generate Vcd traces at the moment | 05:51:36 |
jooyeon111 (jooyeon111) | Thank you for the answering my question!!. So,currently is there any method to verify my own chisel design with digital timing diagram right now? | 05:55:53 |
Raffaele Meloni | I've been working on a simulator that will generate not only Vcd files for chiselsim like chiseltest but also a waveform viewer suited for chisel. However it's currently under development.
I realized a demo which contains 2 simulators ParametricSimulator and another one to generate waves for chisel types: https://github.com/rameloni/tywaves-chisel-demo
The parametric simulator is fully working and you can use it to generate Vcd. But it relies on the development branch of chisel. In my readme it should be clear enough how to use it. | 05:56:27 |
Raffaele Meloni | I was going to create a post later today about my project. I've already talked with the CIRCT group (especially Fabian) about that but I haven't published the demo yet.
It's a demo and it has limited support for specific chisel waveforms but as I said ParametricSimulator should be enough for you at the moment | 05:58:48 |
jooyeon111 (jooyeon111) | Wow, thank you!! i will try it right now!!! | 06:00:32 |
Raffaele Meloni | You're welcome! And please, let me know! | 06:01:21 |
Raffaele Meloni | The makefile in the repo should have rules to install everything properly | 06:01:46 |
jooyeon111 (jooyeon111) | Okay!! | 06:02:20 |
Raffaele Meloni | If you run make all it should publish locally the library with all the dependencies and to use it in your project you can add:
libraryDependencies += "com.github.rameloni" %% "tywaves-demo-backend" % "0.1.0-SNAPSHOT" I need to update the readme | 06:08:36 |
Raffaele Meloni | jooyeon111 (jooyeon111): I've just updated the branch with the new readme, you can follow the instructions there. There's also an update in the source code after I merged the branch, you should pull and install it again if you have already done it | 06:41:36 |
9 Apr 2024 |
jackkoenig (Jack Koenig) | This looks super cool Raffaele Meloni! | 16:18:23 |
karljoad | I am getting some confusing results in a family of operations. I have a Vec(batchSize, UInt(64.W)) and want to perform element operations on two of these vecs. The following code produces incorrect results:
workingSpace := (io.in1, io.in2).zipped.map(_ <= _)
// workingSpace result is (0x1, 0x31, 0x0)
Am I missing something about the way a mapped binary operator over a vector works?
| 17:03:03 |
karljoad | * I am getting some confusing results in a family of operations. I have a Vec(batchSize, UInt(64.W)) and want to perform element operations on two of these vecs. The following code produces incorrect results:
workingSpace := (io.in1, io.in2).zipped.map(_ <= _)
// workingSpace result is (0x1, 0x31, 0x0)
// Result should be (true, false, true)
Am I missing something about the way a mapped binary operator over a vector works?
| 17:17:26 |
jackkoenig (Jack Koenig) | From the code you've shared, I agree that is a surprising result. Can you share a little bit more context, perhaps a reproducible example built from the Chisel Scala CLI example? https://www.chisel-lang.org/docs/installation#quickstart-with-scala-cli | 18:15:40 |