by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Aug 12 13:49

    Dolu1990 on dev

    Add Axi4ToAxi3 bridge (compare)

  • Aug 12 09:41

    Dolu1990 on dev

    SpinalSim bring back seed messa… (compare)

  • Aug 12 09:40

    Dolu1990 on dma

    SpinalSim bring back seed messa… (compare)

  • Aug 11 15:49

    Dolu1990 on dma

    DmaSg add selfRestartCapable op… (compare)

  • Aug 11 15:41

    Dolu1990 on dma

    dmaSg improve memory core timin… (compare)

  • Aug 11 15:14

    Dolu1990 on dma

    dmaSg improve FMax (compare)

  • Aug 11 14:56

    Dolu1990 on dma

    DmaSg improve input stream timi… (compare)

  • Aug 11 12:59

    Dolu1990 on dma

    DmaSg improve timings by having… (compare)

  • Aug 10 22:10

    Dolu1990 on dma

    Add the ability to read the cha… (compare)

  • Aug 07 17:51

    Dolu1990 on dma

    Fix Bsb tstrb into tkeep DmaSg … (compare)

  • Aug 07 11:20

    Dolu1990 on dma

    Add Bsb sparse Up/down sizers A… Add Bsb bridges tests DmaSg enable smaller stream test (compare)

  • Aug 07 08:52

    Dolu1990 on dma

    dmasg ctrl can now read pending… (compare)

  • Aug 06 22:05

    Dolu1990 on dma

    DmaSg add channel fixed buffer … (compare)

  • Aug 06 20:02

    Dolu1990 on dma

    DmaSg add half completion inter… (compare)

  • Aug 06 11:54

    Dolu1990 on dma

    Fix BmbUpSizerBridge when write… (compare)

  • Aug 05 18:23

    Dolu1990 on dma

    Dma now do byte accesses relax … (compare)

  • Aug 05 12:49

    Dolu1990 on dma

    Nameable add overrideLocalName Axi4SpecRenamer add Bsb support add DmaSg to regressions (compare)

  • Aug 05 11:52

    Dolu1990 on dma

    Fix BmbContextRemover DmaSg make tester reusable for … (compare)

  • Aug 04 17:31

    Dolu1990 on dma

    DmaSg channels can now have a s… (compare)

  • Aug 04 11:50

    Dolu1990 on dma

    Add BmbSourceRemover FixBmbToAxi4Bridge DmaSg improve timings (compare)

chwise
@chwise
Yes! hahaha
skyee
@skyee
@jijingg are you going to write your own MBIST ?
Paulo Costa
@pcesar22
@jijingg can you give more detail on how you use jupyter notebook, i.e. how you set it up and what your use case is? Maybe share a particular one? I'd love to be able to replicate that
Nvm, just scrolled up and saw the bootcamp you shared. This is what Spinal HDL needs. Will look into it.
I gave up on SpinalHDL a while ago and chose Chisel just because of their bootcamp. Much more gentle in introducing Scala and Chisel at the same time. It's a big learning curve if you just come from Verilog, and that chisel bootcamp did wonders for me. I stuck with Chisel long enough to see why SpinalHDL is much better, so once work calms down again I'll definitely give it another shot
bellaz89
@bellaz89
@pcesar22 out of curiosity: what are the advantages of SpinalHDL vs Chissl
.. Chisel and vice-versa. I only used the former, so I am wondering what are the pros and cons of Spinal's mother project
Also there exist a comparison page, but it is outdated (right @Dolu1990 ? )
bellaz89
@bellaz89
@jijingg . Your work is impressive. I wonder if it would be possible to make the notebooks available online, so even the slightest difficulty barrier to learn Spinal is removed.
I tried to launch them with Binder but it seems to lack a kernel :P
bellaz89
@bellaz89
Have something that works just entering a web page would help me a lot in evangelizing my colleagues XD
Dolu1990
@Dolu1990
We could add it in the doc if that's fine for @jijingg
@bellaz89 So basicaly between Chisel and SpinalHDL much of that comparison page is still valid as far i know
bellaz89
@bellaz89
Ah ok, I remembered you saying that some points are out of date
Dolu1990
@Dolu1990
right, they reworked clock domain, and a few things.
To be accurate, i would need to re-evaluate it in depth ^^
jijingg
@jijingg
@bellaz89 right, the Binder have some issue of lack kernel , let me try to fix that , I usually run jupyter notebook locally, because visiting Binder in China is very slow. I don't know if you have any speed problem using Binder. If the speed is OK, the online environment is really more convenient, especially for beginners
bellaz89
@bellaz89
@jijingg : Thank you very much ! That's awesome. Yes, is quite sluggish also here.. I don't know better alternatives since I am not really experienced in Jupyter.
But maybe the initial loading overhead is not so important as soon as it works without further actions
jijingg
@jijingg
@bellaz89 Yes, your suggestion is good. inital loading can be considered move into the background
@Dolu1990 ,If you appreciate, I would like to move Spinal-bootcamp repos to the SpinalHDL organization page. Since not all the contents have been completed, this matter has been delayed until now
But it also welcome everyone provide more better examples and content
jijingg
@jijingg
@skyee yes, i did MBIST interface for my work, Although it can work now, not reached my expectation. I hope the common interface of MBIST, scanmode ,Dft can be exist in a more common and convenient way. This requires some basic components of spinalhdl to be updated. I'll discuss it with @Dolu1990 after I think about it clearly, It may take some time
Dolu1990
@Dolu1990
@jijingg I added the repo in the SpinalHDL organisation and sent you the acceses :)
jijingg
@jijingg
ok
bellaz89
@bellaz89
<3
jijingg
@jijingg
@pcesar22 Actually, it's very simple. As long as you install jupyter and almond correctly, other spinalhdl things at ./source/load- spinal.sc
jijingg
@jijingg

About chisel and spinal i have something to share

I'm a 10 years verilog guys, at first, i used the chisel in my ic work for a period of time,
and Then found spinalHDL by a chance. after spent one week to know spinalhdl, I was very sure move from chisel to Spinal.
Although compared with Verilog, chisel gives me a taste of the power of real parameterization,

But Why I abandoned Chisel and move to spinalHDL with a simple reason:
chisel/Rocket have too many low-level design errors.

All of this points to its team background, most of them come from school, They may be more academic and creative, but they are relatively inexperienced in engineering

some people may disagree with me, but even if there is a little HW engineer background

the following mistakes should never be made

  • cant ignore such important and basic things as asynchronous reset,
  • cant missing basic case expression(they use if/else instead, too ugly)
  • the design of rocketChip global implicit parameter p is so terrible

Some designs are just wishful thinking or Academic experimental

  • iotest, no practical toys. It seems that iotest2 realize that and on the right track
  • firrtl, it just make design and debug more complex and difficult then do nothing good

and you will find Both chisel-source-code and generated verilog code lack readability, make you mad

Maybe the SpinalHDL not top perfect, So far, I haven't found any very serious low-level problems,
Spinal have complete documentation and readable source code. More friendly to IC-HW engineers.
and i found spinal have better tasty :grinning:
here is simple compare for little detail

image

at last ,We have recently developed a GNSS positioning chip with spinalHDL, so don't worry about whether it is suitable for real IC project.

bellaz89
@bellaz89
@jijingg thank you for sharing your experience :)
I agree in particular on the generated code.. sometimes the geneeated SpinalHDL code is more readable than some pieces of junk that lie around in our code repo
Oron Port
@soronpo
Chisel was oriented from ASIC POV, while Spinal from FPGA.
Paulo Costa
@pcesar22

@bellaz89 I am nowhere near proficient enough on both of them to be able to feel strongly about this but here is a bit of my experience. A lot of this might not even a limitation of Chisel but a limitation of myself. I have tried a significant project in Chisel in my work, but then just went back to Verilog when my time for experimentation ran out. I've not tried anything with SpinalHDL outside some workshops. I did however have brief hurdle with Chisel that I don't think I'll have with SpinalHDL when I have time to try this again:

  • Tristate. Chisel doesn't really support this. SpinalHDL has a full page describing this https://spinalhdl.github.io/SpinalDoc-RTD/SpinalHDL/Libraries/IO/tristate.html. Same issue with inout signals. I had to infer my bidirectional buffer in Quartus rather than just using inout and being done with it. Doesn't block anything, but it is just.... ugh.
  • PeekPokeTester. For reasons that are beyond me, the Peekpoketester can only drive inputs on falling edge clocks. Maybe there is some way around this, but it really wasn't clear to me how that could be done. Not sure how iotest2 works on this regard but SpinalSim seems to be much superior and I smile when I look at this page https://spinalhdl.github.io/SpinalDoc-RTD/SpinalHDL/Simulation/clock.html . Though, again, something I need to try for myself before giving SpinalHDL the victory here.
  • Overcomplicated references. I want to do something simple, create a memory mapped Avalon Bus Slave. So then I start looking for examples on how to set up a memory mapped bus slave. Crickets. Then I find a couple of processors and they use this RegisterRouter module, that is a library of a particular CPU (rocketchip) instead of being part of the Chisel framework. Still way too complicated, uses some TileLink fabric, with some options for AXI4. Then I look the AXi4 implementation. Stacked, still can't follow with my lackluster Scala knowledge. I find another less complicated RegisterRouter example in SiFive repo, uses wishbone, much nicer. Still, it is hard to follow the crumbs of how things are supposed to be used across several different repos. Maybe one day it will be a simpler undertaking. On SpinalHDL, there is a very simple setup in one of the SpinalHDL youtube videos that just builds a geenric slave with a bus factory and implements the register interface. Done. I expect this to be simple, and the video + source code show it is simple. When I look at the SpinalLib that has these bus implementations (one of which was Avalon!), it is much simpler to follow. I actually tried to implement the SpinalHDL Avalon Bus implementation in Chisel, but ran into all sort of issues. I couldn't even write the .asMaster and .asSlave implementations (though that' s probably a problem with me, not with Chisel). Anyways, I digress. It just seems like SpinalHDL is holding my hand a lot more with the application that I am in. Some of the constructs like BusFactory and Flow are not only nice and useful, but actually highlight how actual OOP Scala can be used for hardware generation. Whenever I look at the rocketchip libraries in Chisel I just see a bunch of clever mappings with organization going all over the place and just drown.

Chisel has a lot going for it though. SiFive is also a really cool reference if I were to sit and try to understand it one day. There is BOOM, Rocketchip repos, and many more videos online talking about Chisel. There's a few (underdocumented) libraries that might be worth looking into like diplomacy, dsptools, tilelink. Chisel bootcamp is also a big thing that was essential for me to actually get started with all of this. They even have a book with some neat examples too. SpinalHDL only has a rusty SpinalWorkshop and a few examples in the documentation, but not much other than that. I had a much harder time finding examples and references in SpinalHDL, which is why I went the Chisel route in the first place. At the "I don't know Scala at all" level, Chisel held my hand much more.

Wow that's a big text. Didn't expect to type that much
saahm
@saahm
Good read
worth the big text ;)
Paulo Costa
@pcesar22
thanks! : )
Paulo Costa
@pcesar22
Correction "I had to infer my bidirectional buffer in Quartus..." ---> " I had to instantiate my bidirectional buffer in Quartus and use a black box in Chisel"
saahm
@saahm
also i remember that chisel was mainly build around the goal of having riscv generators
so it started very specific
Paulo Costa
@pcesar22
@jijingg I'm having this issue that jupyter gets stuck on "kernel starting... please wait". I think it has to do with java version. What java version are you using?
@saahm I didn't know htat, but that is very much in line with my findings. Chisel didn't seem to branch out anywhere else other than the big RISCV specific stuff
Paulo Costa
@pcesar22
Fixed it by changing to java 8
saahm
@saahm
its fast and early results bootstrapped some riscv projects, was neat
jijingg
@jijingg

@pcesar22 Your experience is so real.

Overcomplicated references. I want to do something simple, create a memory mapped Avalon Bus Slave .....

I can't damn agree more with these experience and feelings.

Chisel is really more famous, but most because of Berkeley and RISCV, It is the first language to provide a feasibility of develeping HDL based on Scala . But What Chisel means to me was that gave me a ladder to SpinalHDL :grinning:

bellaz89
@bellaz89
Thanks @pcesar22 . Yes, Bus functionalities are quite cool in Spinal.
bellaz89
@bellaz89
For my PhD I am developing a VexRiscV based controller. For that I needed to write a bunch of computation accelerators. I was really surprised how easy is to attach a memory mapped peripheral to the processor. And the most satisfying thing is that I am able to simulate the entire SoC running compiled programs on top of that.
For the next step I planned to simulate a closed feedback loop using Apache common math ODE package to describe my controlled system.
I really love SpinalSim :)
saahm
@saahm
all out of one bash terminal
the dream of fpga toolflow