Libre RISC-V Mailing list Archives (accessible via public-inbox)
 help / color / Atom feed
* [libre-riscv-dev] minimum viable ASIC
@ 2020-05-08  9:50 Luke Kenneth Casson Leighton
  2020-05-08 10:29 ` Staf Verhaegen
                   ` (3 more replies)
  0 siblings, 4 replies; 21+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-08  9:50 UTC (permalink / raw)
  To: Libre-RISCV General Development

i'd like to discuss what the minimum viable ASIC would look like,
that, if we're happy to do so, we could hit the October 2020 deadline
with it and not be completely stressed.

my take on this is, which i've added here (do edit, comment etc.
https://libre-soc.org/180nm_Oct2020/)

* a Wishbone interface.  this allows us to drop *directly* into
already-written Litex "SOC" infrastructure (leaving all of us in the
core team free to focus on the essentials)
* the dependency matrices are essential.
* a Branch Function Unit is essential (minimum of 1)
* Load/Store Function Units are essential
* so are multiple register file files (SPRs, Condition Regs, 32x INT Regs)
* the integer pipelines (integer and logic instructions) are essential
(the FP ones not so much)
* a very very basic Branch Prediction system (fixed, but observing
POWER branch "hints")
* a very very basic Common Data Bus infrastructure.
* a TLB and MMU are not strictly essential (not for a proof-of-concept ASIC)
* neither in some ways is a L1 cache
* interfaces we need as a bare minimum include GPIO, EINT, SPI and
QSPI, I2C, UART16550, LPC (from Raptor Engineering) and that actually
might even be it.

secondary priorities (which are approximately in priority order)

* a PLL (this is quite a lot however it turns the ASIC from a 24mhz
design into a 300mhz design)
* a TLB and MMU (in combination with a PLL if it is GNU/Linux OS
capable we have an actual viable *saleable product*, immediately)
* dual L1 Caches with the 2x 128-bit-wide L0CacheBuffer to merge 8x LD/STs
* multiple Common Data Buses to / from the RegFile along with a 4x
"Striped" HI/LO-32-ODD/EVEN access pattern.
* multi-issue
* PartitionedSignal-based integer pipelines
* an FP regfile and associated FP pipelines
* SV compliance
* 128x INT/FP registers
* GPU-style opcodes - Jacob you mentioned Texturisation opcodes as
being more important than e.g. SIN/COS.
* additional interfaces such as RGB/TTL, SDRAM, HyperRAM, RGMII,
SD/MMC, USB-ULPI
* a pinmux

so the *absolute* basic - minimum viable ASIC - is to be honest really
not a lot.

now, i was contacted by Rudi, from http://asics.ws, he has some time
available, he's been doing ASIC design for 20+ years.  he's more than
happy to take care of the interfaces for us.  we define the set, he
will get on with it, design the Wishbone Registers etc. for us.

given what's already been achieved, that *really does* leave us with a
very small amount of work to do.  the integer pipelines are something
that's really quite straightforward to do, and basically "track" the
work that Michael's been doing on the simulator.

one essential aspect of the simulator work is: unit tests have to be
done.  those *exact* same unit tests we can use to test the hardware
version, either against the simulator *or* against qemu, it's all the
same.

if MarketNext find people fast, we will have a whole batch of people
who can help hammer through the tasks, which will give us the space to
focus on "difficult" bits.

thoughts appreciated.

l.

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08  9:50 [libre-riscv-dev] minimum viable ASIC Luke Kenneth Casson Leighton
@ 2020-05-08 10:29 ` Staf Verhaegen
  2020-05-08 10:42   ` Luke Kenneth Casson Leighton
  2020-05-08 12:43   ` Yehowshua
  2020-05-08 12:49 ` Yehowshua
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 21+ messages in thread
From: Staf Verhaegen @ 2020-05-08 10:29 UTC (permalink / raw)
  To: libre-riscv-dev

[-- Attachment #1.1: Type: text/plain, Size: 321 bytes --]

Luke Kenneth Casson Leighton schreef op vr 08-05-2020 om 10:50 [+0100]:
> 
> * a PLL (this is quite a lot however it turns the ASIC from a 24mhz
> design into a 300mhz design)

Why only 24MHz without PLL ? You should have problems getting external
clock frequencies up to 100MHz without a problem inside a chip.


[-- Attachment #2: Type: text/plain, Size: 177 bytes --]

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08 10:29 ` Staf Verhaegen
@ 2020-05-08 10:42   ` Luke Kenneth Casson Leighton
  2020-05-08 11:10     ` Staf Verhaegen
  2020-05-08 12:43   ` Yehowshua
  1 sibling, 1 reply; 21+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-08 10:42 UTC (permalink / raw)
  To: Libre-RISCV General Development

On Friday, May 8, 2020, Staf Verhaegen <staf@fibraservi.eu> wrote:

>
> Why only 24MHz without PLL ? You should have problems getting external
> clock frequencies up to 100MHz without a problem inside a chip.
>

really? great!  and that's driven from an external 100mhz clock?  it seems
a little high, i guess i am used to SoCs which all run from a 24mhz XTAL.

l.




-- 
---
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08 10:42   ` Luke Kenneth Casson Leighton
@ 2020-05-08 11:10     ` Staf Verhaegen
  0 siblings, 0 replies; 21+ messages in thread
From: Staf Verhaegen @ 2020-05-08 11:10 UTC (permalink / raw)
  To: libre-riscv-dev

[-- Attachment #1.1: Type: text/plain, Size: 629 bytes --]

Luke Kenneth Casson Leighton schreef op vr 08-05-2020 om 11:42 [+0100]:
> On Friday, May 8, 2020, Staf Verhaegen <staf@fibraservi.eu> wrote:
> > Why only 24MHz without PLL ? You should have problems getting externalclock frequencies up to 100MHz without a problem inside a chip.
> 
> really? great!  and that's driven from an external 100mhz clock?  it seemsa little high, i guess i am used to SoCs which all run from a 24mhz XTAL.

There exist clock generator chips, some of them even programmable over a serial bus interface. In the retro world amiga 75MHz accelerator cards or above are not unheard of.
greets,Staf.


[-- Attachment #2: Type: text/plain, Size: 177 bytes --]

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08 10:29 ` Staf Verhaegen
  2020-05-08 10:42   ` Luke Kenneth Casson Leighton
@ 2020-05-08 12:43   ` Yehowshua
  2020-05-08 12:46     ` Luke Kenneth Casson Leighton
  1 sibling, 1 reply; 21+ messages in thread
From: Yehowshua @ 2020-05-08 12:43 UTC (permalink / raw)
  To: Libre-RISCV General Development

I talked to Raptor and if Series A doesn’t pan out in August, Raptor is willing to foot 30k for PLL design in exchange for some equity.

Yehowshua
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08 12:43   ` Yehowshua
@ 2020-05-08 12:46     ` Luke Kenneth Casson Leighton
  2020-05-08 19:08       ` Staf Verhaegen
  0 siblings, 1 reply; 21+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-08 12:46 UTC (permalink / raw)
  To: Libre-RISCV General Development

On Fri, May 8, 2020 at 1:44 PM Yehowshua <yimmanuel3@gatech.edu> wrote:

> I talked to Raptor and if Series A doesn’t pan out in August, Raptor is willing to foot 30k for PLL design in exchange for some equity.

that's fantastic.  it would give us (and any other team)
Foundry-independence.  normally the PLL is available as a Standard
Cell from a Foundry... but only under NDA.

l.

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08  9:50 [libre-riscv-dev] minimum viable ASIC Luke Kenneth Casson Leighton
  2020-05-08 10:29 ` Staf Verhaegen
@ 2020-05-08 12:49 ` Yehowshua
  2020-05-08 12:50   ` Yehowshua
  2020-05-08 12:59 ` Yehowshua
  2020-05-08 15:27 ` [libre-riscv-dev] Debug port (was Re: minimum viable ASIC) whygee
  3 siblings, 1 reply; 21+ messages in thread
From: Yehowshua @ 2020-05-08 12:49 UTC (permalink / raw)
  To: Libre-RISCV General Development



> On May 8, 2020, at 5:50 AM, Luke Kenneth Casson Leighton <lkcl@lkcl.net> wrote:
> 
> i'd like to discuss what the minimum viable ASIC would look like,
> that, if we're happy to do so, we could hit the October 2020 deadline
> with it and not be completely stressed.
> 
> my take on this is, which i've added here (do edit, comment etc.
> https://libre-soc.org/180nm_Oct2020/)
> 
> * a Wishbone interface.  this allows us to drop *directly* into
> already-written Litex "SOC" infrastructure (leaving all of us in the
> core team free to focus on the essentials)

This is a good call. I talked to Florent from Enjoy Digital last week, and he said he’s willing to help with LiTeX integration for LibreSOC. He also said Enjoy Digital is available for hire depending on how much must be done.

> * the dependency matrices are essential.
> * a Branch Function Unit is essential (minimum of 1)
> * Load/Store Function Units are essential
> * so are multiple register file files (SPRs, Condition Regs, 32x INT Regs)
> * the integer pipelines (integer and logic instructions) are essential
> (the FP ones not so much)
> * a very very basic Branch Prediction system (fixed, but observing
> POWER branch "hints")
> * a very very basic Common Data Bus infrastructure.
> * a TLB and MMU are not strictly essential (not for a proof-of-concept ASIC)
> * neither in some ways is a L1 cache
> * interfaces we need as a bare minimum include GPIO, EINT, SPI and
> QSPI, I2C, UART16550, LPC (from Raptor Engineering) and that actually
> might even be it.
> 
> secondary priorities (which are approximately in priority order)
> 
> * a PLL (this is quite a lot however it turns the ASIC from a 24mhz
> design into a 300mhz design)
> * a TLB and MMU (in combination with a PLL if it is GNU/Linux OS
> capable we have an actual viable *saleable product*, immediately)
> * dual L1 Caches with the 2x 128-bit-wide L0CacheBuffer to merge 8x LD/STs
> * multiple Common Data Buses to / from the RegFile along with a 4x
> "Striped" HI/LO-32-ODD/EVEN access pattern.
> * multi-issue
> * PartitionedSignal-based integer pipelines
> * an FP regfile and associated FP pipelines
> * SV compliance
> * 128x INT/FP registers
> * GPU-style opcodes - Jacob you mentioned Texturisation opcodes as
> being more important than e.g. SIN/COS.

And keep in mind, if we aren’t able to finish the GPU opcodes by October/November/December(according to Staff - these are the available 2020 slots), Raptor has agreed to foot 20k for the silicon, again, in exchange for some equity.

> * additional interfaces such as RGB/TTL, SDRAM, HyperRAM, RGMII,
> SD/MMC, USB-ULPI
> * a pinmux
> 
> so the *absolute* basic - minimum viable ASIC - is to be honest really
> not a lot.
> 
> now, i was contacted by Rudi, from http://asics.ws, he has some time
> available, he's been doing ASIC design for 20+ years.  he's more than
> happy to take care of the interfaces for us.  we define the set, he
> will get on with it, design the Wishbone Registers etc. for us.
> 
> given what's already been achieved, that *really does* leave us with a
> very small amount of work to do.  the integer pipelines are something
> that's really quite straightforward to do, and basically "track" the
> work that Michael's been doing on the simulator.
> 
> one essential aspect of the simulator work is: unit tests have to be
> done.  those *exact* same unit tests we can use to test the hardware
> version, either against the simulator *or* against qemu, it's all the
> same.
> 
> if MarketNext find people fast, we will have a whole batch of people
> who can help hammer through the tasks, which will give us the space to
> focus on "difficult" bits.
> 
> thoughts appreciated.
> 
> l.
> 
> _______________________________________________
> libre-riscv-dev mailing list
> libre-riscv-dev@lists.libre-riscv.org
> http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev


_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08 12:49 ` Yehowshua
@ 2020-05-08 12:50   ` Yehowshua
  0 siblings, 0 replies; 21+ messages in thread
From: Yehowshua @ 2020-05-08 12:50 UTC (permalink / raw)
  To: Libre-RISCV General Development

But really guys, I’m betting the Series A will be just fine, from it, we can hire some talented engineers, and from then on, execution, not finances will be our bottleneck.

What I really need is an “hello world” on FPGA by demo day for August.

Yehowshua
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08  9:50 [libre-riscv-dev] minimum viable ASIC Luke Kenneth Casson Leighton
  2020-05-08 10:29 ` Staf Verhaegen
  2020-05-08 12:49 ` Yehowshua
@ 2020-05-08 12:59 ` Yehowshua
  2020-05-08 12:59   ` Yehowshua
  2020-05-08 14:59   ` Luke Kenneth Casson Leighton
  2020-05-08 15:27 ` [libre-riscv-dev] Debug port (was Re: minimum viable ASIC) whygee
  3 siblings, 2 replies; 21+ messages in thread
From: Yehowshua @ 2020-05-08 12:59 UTC (permalink / raw)
  To: Libre-RISCV General Development

Luke, I like the list of priorities. Can we convert it into a 15 week timeline?

We can use the timeline to inform where time/effort should be open. We should also pop the timeline on the wiki.

Yehowshua
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08 12:59 ` Yehowshua
@ 2020-05-08 12:59   ` Yehowshua
  2020-05-08 14:59   ` Luke Kenneth Casson Leighton
  1 sibling, 0 replies; 21+ messages in thread
From: Yehowshua @ 2020-05-08 12:59 UTC (permalink / raw)
  To: Libre-RISCV General Development



> On May 8, 2020, at 8:59 AM, Yehowshua <yimmanuel3@gatech.edu> wrote:
> 
> should be open.

Spent - not open.
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08 12:59 ` Yehowshua
  2020-05-08 12:59   ` Yehowshua
@ 2020-05-08 14:59   ` Luke Kenneth Casson Leighton
  2020-05-08 15:00     ` Yehowshua
  1 sibling, 1 reply; 21+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-08 14:59 UTC (permalink / raw)
  To: Libre-RISCV General Development

On Fri, May 8, 2020 at 1:59 PM Yehowshua <yimmanuel3@gatech.edu> wrote:
>
> Luke, I like the list of priorities. Can we convert it into a 15 week timeline?

yep.  need peoples' help to do that, look for or create bugreports so
the discussions don't go mad / all over the place.  i'm still really
really trying to focus on this LD/ST interface before a call at 4:30pm
today.

> We can use the timeline to inform where time/effort should be open. We should also pop the timeline on the wiki.

yes.

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08 14:59   ` Luke Kenneth Casson Leighton
@ 2020-05-08 15:00     ` Yehowshua
  0 siblings, 0 replies; 21+ messages in thread
From: Yehowshua @ 2020-05-08 15:00 UTC (permalink / raw)
  To: Libre-RISCV General Development

> yep.  need peoples' help to do that, look for or create bugreports so
> the discussions don't go mad / all over the place.  i'm still really
> really trying to focus on this LD/ST interface before a call at 4:30pm
> today.

OK. I can put some effort into this. Please do stay focused.

Yehowshua

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [libre-riscv-dev] Debug port (was Re:  minimum viable ASIC)
  2020-05-08  9:50 [libre-riscv-dev] minimum viable ASIC Luke Kenneth Casson Leighton
                   ` (2 preceding siblings ...)
  2020-05-08 12:59 ` Yehowshua
@ 2020-05-08 15:27 ` whygee
  2020-05-08 16:55   ` Luke Kenneth Casson Leighton
  3 siblings, 1 reply; 21+ messages in thread
From: whygee @ 2020-05-08 15:27 UTC (permalink / raw)
  To: Libre-RISCV General Development

On 2020-05-08 11:50, Luke Kenneth Casson Leighton wrote:
> i'd like to discuss what the minimum viable ASIC would look like,
> that, if we're happy to do so, we could hit the October 2020 deadline
> with it and not be completely stressed.
> 
<snip>
> 
> thoughts appreciated.

To me JTAG/TAP/debug port shine from its absence.

how will you "talk" with the chip when it
arrives from factory and you want to ensure
all its pins are correctly soldered/bonded
and you want to explore the insides to
test each unit ?

> l.
yg

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] Debug port (was Re: minimum viable ASIC)
  2020-05-08 15:27 ` [libre-riscv-dev] Debug port (was Re: minimum viable ASIC) whygee
@ 2020-05-08 16:55   ` Luke Kenneth Casson Leighton
  2020-05-08 17:23     ` Staf Verhaegen
  0 siblings, 1 reply; 21+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-08 16:55 UTC (permalink / raw)
  To: Libre-RISCV General Development

On Fri, May 8, 2020 at 4:27 PM <whygee@f-cpu.org> wrote:

> To me JTAG/TAP/debug port shine from its absence.

yep good catch.  added.


l.

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] Debug port (was Re: minimum viable ASIC)
  2020-05-08 16:55   ` Luke Kenneth Casson Leighton
@ 2020-05-08 17:23     ` Staf Verhaegen
  2020-05-08 22:19       ` Luke Kenneth Casson Leighton
  0 siblings, 1 reply; 21+ messages in thread
From: Staf Verhaegen @ 2020-05-08 17:23 UTC (permalink / raw)
  To: libre-riscv-dev

[-- Attachment #1.1: Type: text/plain, Size: 355 bytes --]

Luke Kenneth Casson Leighton schreef op vr 08-05-2020 om 17:55 [+0100]:
> On Fri, May 8, 2020 at 4:27 PM <whygee@f-cpu.org> wrote:
> > To me JTAG/TAP/debug port shine from its absence.
> 
> yep good catch.  added.

I already have (alpha version) nmigen JTAG code: https://gitlab.com/Chips4Makers/c4m-jtagStaf. id="-x-evo-selection-start-marker">


[-- Attachment #2: Type: text/plain, Size: 177 bytes --]

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08 12:46     ` Luke Kenneth Casson Leighton
@ 2020-05-08 19:08       ` Staf Verhaegen
  2020-05-08 20:35         ` Luke Kenneth Casson Leighton
  0 siblings, 1 reply; 21+ messages in thread
From: Staf Verhaegen @ 2020-05-08 19:08 UTC (permalink / raw)
  To: libre-riscv-dev

[-- Attachment #1.1: Type: text/plain, Size: 987 bytes --]

Luke Kenneth Casson Leighton schreef op vr 08-05-2020 om 13:46 [+0100]:
> On Fri, May 8, 2020 at 1:44 PM Yehowshua <yimmanuel3@gatech.edu> wrote:
> > I talked to Raptor and if Series A doesn’t pan out in August, Raptor is willing to foot 30k for PLL design in exchange for some equity.
> 
> that's fantastic.  it would give us (and any other team)Foundry-independence.  normally the PLL is available as a StandardCell from a Foundry... but only under NDA.

Be aware that PLL is an analog block meaning that if you let it design for a certain process from a certain foundry it will only work for that node and foundry. It is not portable like RTL code is unless specifically designed for that but analog designers typically don't know how to do that. Also in order to design the PLL you need NDA to access the PDK which likely also forbids making the final GDSII of your design public.

Also giving away equity gives cause for other type of dependence...

greets,
Staf.



[-- Attachment #2: Type: text/plain, Size: 177 bytes --]

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] minimum viable ASIC
  2020-05-08 19:08       ` Staf Verhaegen
@ 2020-05-08 20:35         ` Luke Kenneth Casson Leighton
  0 siblings, 0 replies; 21+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-08 20:35 UTC (permalink / raw)
  To: Libre-RISCV General Development

On Fri, May 8, 2020 at 8:08 PM Staf Verhaegen <staf@fibraservi.eu> wrote:
>
> Luke Kenneth Casson Leighton schreef op vr 08-05-2020 om 13:46 [+0100]:
> > On Fri, May 8, 2020 at 1:44 PM Yehowshua <yimmanuel3@gatech.edu> wrote:
> > > I talked to Raptor and if Series A doesn’t pan out in August, Raptor is willing to foot 30k for PLL design in exchange for some equity.
> >
> > that's fantastic.  it would give us (and any other team)Foundry-independence.  normally the PLL is available as a StandardCell from a Foundry... but only under NDA.
>
> Be aware that PLL is an analog block meaning that if you let it design
> for a certain process from a certain foundry it will only work for that node and foundry.

yes.

> It is not portable like RTL code is unless specifically designed for that but
> analog designers typically don't know how to do that.

the professor at LIP6.fr knows what he is doing.

> Also in order to design the PLL you need NDA to access the PDK which likely
> also forbids making the final GDSII of your design public.

yes, have to be realistic about that.

thanks Staf.

l.

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] Debug port (was Re: minimum viable ASIC)
  2020-05-08 17:23     ` Staf Verhaegen
@ 2020-05-08 22:19       ` Luke Kenneth Casson Leighton
  2020-05-20 16:44         ` Staf Verhaegen
  0 siblings, 1 reply; 21+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-08 22:19 UTC (permalink / raw)
  To: Libre-RISCV General Development

---
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68

On Fri, May 8, 2020 at 6:23 PM Staf Verhaegen <staf@fibraservi.eu> wrote:
>
> Luke Kenneth Casson Leighton schreef op vr 08-05-2020 om 17:55 [+0100]:
> > On Fri, May 8, 2020 at 4:27 PM <whygee@f-cpu.org> wrote:
> > > To me JTAG/TAP/debug port shine from its absence.
> >
> > yep good catch.  added.
>
> I already have (alpha version) nmigen JTAG code: https://gitlab.com/Chips4Makers/c4m-jtag
> Staf. id="-x-evo-selection-start-marker">

found the link (minus HTML error)
https://gitlab.com/Chips4Makers/c4m-jtag

ah.  as a software engineer, the practice of using wildcard imports is
an extremely bad one.  i strongly advocate *not* getting into the
habit of doing "from nmigen import *" everywhere - it will make your
life - and other users lives - absolute hell when it comes to trying
to track and debug code.

minerva has a JTAG interface as well.  i corrected the practice of
using "import *" in this one

https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/minerva/units/debug/controller.py;h=7304303e577b14eebba15144642eb7bee829e107;hb=a54adcb65bad37b398b11e33a824c7d08c5fe509

it looks like the minerva team got a long way with that.  also
provided a wishbone master interface:

https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/minerva/units/debug/wbmaster.py;h=db02af95b4eb3ef8ac25b348f3abaa2bcbe7d96f;hb=a54adcb65bad37b398b11e33a824c7d08c5fe509

l.

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] Debug port (was Re: minimum viable ASIC)
  2020-05-08 22:19       ` Luke Kenneth Casson Leighton
@ 2020-05-20 16:44         ` Staf Verhaegen
  2020-05-20 17:22           ` Luke Kenneth Casson Leighton
  0 siblings, 1 reply; 21+ messages in thread
From: Staf Verhaegen @ 2020-05-20 16:44 UTC (permalink / raw)
  To: libre-riscv-dev

[-- Attachment #1.1: Type: text/plain, Size: 2338 bytes --]

Luke Kenneth Casson Leighton schreef op vr 08-05-2020 om 23:19 [+0100]:
> ---crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68
> 
> On Fri, May 8, 2020 at 6:23 PM Staf Verhaegen <staf@fibraservi.eu> wrote:
> 
> ah.  as a software engineer, the practice of using wildcard imports isan extremely bad one.  i strongly advocate *not* getting into thehabit of doing "from nmigen import *" everywhere - it will make yourlife - and other users lives - absolute hell when it comes to tryingto track and debug code.
> minerva has a JTAG interface as well.  i corrected the practice ofusing "import *" in this one

Would 'import nmigen as nm' work for you?I did not touch code for a few months and in the mean time I do use a more PEP compliant code style. But I am annoyed by the individual list of things to import. For nmigen or Hurricane there is typically a few lines of these includes. When I change for example a Pad to a Rectilinear I may have to update the import list. I don't see value add of this and it annoys me a lot.So I am thinking of switching to 'import Hurricane as hur' and 'import nmigen as nm'To me the only valid reason for not using wild cards is that a later wild card import may replace something you did import before; this is avoided by namespacing the import with 'import ... as ...'.
> it looks like the minerva team got a long way with that.  alsoprovided a wishbone master interface:
> https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/minerva/units/debug/wbmaster.py;h=db02af95b4eb3ef8ac25b348f3abaa2bcbe7d96f;hb=a54adcb65bad37b398b11e33a824c7d08c5fe509

That code seems to focus on the debugging protocol over the JTAG interface the lower level part seems to be missing.In debug/top.py:...
# FIXME: figure out where JTAGTap is
# from jtagtap import JTAGTap


class JTAGTap:
    def __init__(self):
        raise NotImplementedError(
            "jtagtap package not found: figure out where JTAGTap is")
...

My JTAG interface does actually the low level part, the protocol has to be done by the user on top of it. I do think I have a flexible way of adding extra shift registers and jtag commands. I also do provide boundary scan for the IO pins which should make PCB testing much easier (BTW, this was actually the original use case for JTAG).
greets,Staf.



[-- Attachment #2: Type: text/plain, Size: 177 bytes --]

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] Debug port (was Re: minimum viable ASIC)
  2020-05-20 16:44         ` Staf Verhaegen
@ 2020-05-20 17:22           ` Luke Kenneth Casson Leighton
  2020-05-29 10:30             ` Luke Kenneth Casson Leighton
  0 siblings, 1 reply; 21+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-20 17:22 UTC (permalink / raw)
  To: Libre-RISCV General Development

On Wed, May 20, 2020 at 5:44 PM Staf Verhaegen <staf@fibraservi.eu> wrote:
>
> Luke Kenneth Casson Leighton schreef op vr 08-05-2020 om 23:19 [+0100]:
> > ---crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68
> >
> > On Fri, May 8, 2020 at 6:23 PM Staf Verhaegen <staf@fibraservi.eu> wrote:
> >
> > ah.  as a software engineer, the practice of using wildcard imports isan extremely bad one.  i strongly advocate *not* getting into thehabit of doing "from nmigen import *" everywhere - it will make yourlife - and other users lives - absolute hell when it comes to tryingto track and debug code.
> > minerva has a JTAG interface as well.  i corrected the practice ofusing "import *" in this one
>
> Would 'import nmigen as nm' work for you?

and then have everything as "x = nm.Signal()...." and so on?  yes that
would be really good.  i actually worked for a company that made it
mandatory to use the full explicit module name (and used this trick to
get round the issue of ridiculously long names).

they required:

import nmigen
x = nmigen.Signal()
...

however it gets very, very tedious.

import nmigen as nm
x = nm.Signal()

is actually a really good idea.  saves space, explicitly says where
the "thing" (Signal etc.) come from.


> I did not touch code for a few months and in the mean time I do use a more PEP compliant code style.
> But I am annoyed by the individual list of things to import.

Staf: trust me on this one.  the hell it creates for people other than
yourself is beyond measure.  the imports serve a secondary critically
important purpose of documenting _where_ a given variable (class) may
be located.

"import *" completely and utterly obliterates that trail, making
maintenance and code-readability by other people an absolute
nightmare.

> For nmigen or Hurricane there is typically a few lines of these includes.

you quickly get used to cut/pasting from other files.

> When I change for example a Pad to a Rectilinear I may have to update the import list.

and other people when they read that code will be able to track that
change.  i have absolutely no idea what Pad is, nor Rectilinear, for
example.

where should i start looking for it?

which module?

which *package* even?

are they in... nmigen?

are they in Hurricane?

are they in something else that has been wild-card imported?

i *literally* cannot tell, and that makes everyone's life absolute
hell.  we - as users of that code - *literally* have to do "grep -r
Pad" in MULTIPLE source code directories - for completely different
packages (QTY 2 in this one example alone) - to track down where the
definition of "Pad" and "Rectilinear" exist!


> I don't see value add of this and it annoys me a lot.

this is down to inexperience with collaborative python development.  i
say that with no disrespect: it's just that i've used python for 20
years and have seen a lot.

> So I am thinking of switching to 'import Hurricane as hur' and 'import nmigen as nm'

> To me the only valid reason for not using wild cards is that a later wild
> card import may replace something you did import before;

two things (both equally as important):

1. that is down to inexperience from developing python.  *nobody* who
is an experienced python developer uses wildcard imports except in
very, very special mitigating cases

2. you are absolutely correct: this is *another* important reason.

there are many more.

> this is avoided by namespacing the import with 'import ... as ...'.

yes, it is a good trick.

> > also provided a wishbone master interface:
> > https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/minerva/units/debug/wbmaster.py;h=db02af95b4eb3ef8ac25b348f3abaa2bcbe7d96f;hb=a54adcb65bad37b398b11e33a824c7d08c5fe509
>
> That code seems to focus on the debugging protocol over the JTAG interface the lower level part seems to be missing.In debug/top.py:...
> # FIXME: figure out where JTAGTap is
> # from jtagtap import JTAGTap
>
>
> class JTAGTap:
>     def __init__(self):
>         raise NotImplementedError(
>             "jtagtap package not found: figure out where JTAGTap is")
> ...
>
> My JTAG interface does actually the low level part,

ahh that's very interesting to note.  ah that's then a really good
combination, of the two.  one is the external interface, the other
more internal.

> the protocol has to be done by the user on top of it. I do think I have a flexible way of adding extra shift registers and jtag commands. I also do provide boundary scan for the IO pins which should make PCB testing much easier (BTW, this was actually the original use case for JTAG).

ah, really appreciated.

l.

_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [libre-riscv-dev] Debug port (was Re: minimum viable ASIC)
  2020-05-20 17:22           ` Luke Kenneth Casson Leighton
@ 2020-05-29 10:30             ` Luke Kenneth Casson Leighton
  0 siblings, 0 replies; 21+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-29 10:30 UTC (permalink / raw)
  To: Libre-RISCV General Development

On Wednesday, May 20, 2020, Luke Kenneth Casson Leighton <lkcl@lkcl.net>
wrote:

import nmigen as nm
> x = nm.Signal()
>
> is actually a really good idea.  saves space, explicitly says where
> the "thing" (Signal etc.) come from.


i found some code where we do just module import:

https://git.libre-soc.org/?p=nmutil.git;a=blob;f=src/nmutil/singlepipe.py;h=cbd06f648b23a3ad6e9b064093de0f039c76bb32;hb=HEAD#l877

similar to "import operator" or "import math" then use

math.pi
math.cos(x)
operator.add

etc.

this is very good practice, Staf, because it allows the reader, at the
point of use of the function or class, to know immediately without
scrolling to the top of the page, which module the code comes from.

whilst *you* might know that, other readers will not.  the additional
context is critical for *their* understanding and to not force them to work
harder, slowing them down to the point where mistakes are made or they give
up and find someone else's code.

bottom line: it's not about you :) these are practices that make life
easier for *other people*.

l.




-- 
---
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, back to index

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-08  9:50 [libre-riscv-dev] minimum viable ASIC Luke Kenneth Casson Leighton
2020-05-08 10:29 ` Staf Verhaegen
2020-05-08 10:42   ` Luke Kenneth Casson Leighton
2020-05-08 11:10     ` Staf Verhaegen
2020-05-08 12:43   ` Yehowshua
2020-05-08 12:46     ` Luke Kenneth Casson Leighton
2020-05-08 19:08       ` Staf Verhaegen
2020-05-08 20:35         ` Luke Kenneth Casson Leighton
2020-05-08 12:49 ` Yehowshua
2020-05-08 12:50   ` Yehowshua
2020-05-08 12:59 ` Yehowshua
2020-05-08 12:59   ` Yehowshua
2020-05-08 14:59   ` Luke Kenneth Casson Leighton
2020-05-08 15:00     ` Yehowshua
2020-05-08 15:27 ` [libre-riscv-dev] Debug port (was Re: minimum viable ASIC) whygee
2020-05-08 16:55   ` Luke Kenneth Casson Leighton
2020-05-08 17:23     ` Staf Verhaegen
2020-05-08 22:19       ` Luke Kenneth Casson Leighton
2020-05-20 16:44         ` Staf Verhaegen
2020-05-20 17:22           ` Luke Kenneth Casson Leighton
2020-05-29 10:30             ` Luke Kenneth Casson Leighton

Libre RISC-V Mailing list Archives (accessible via public-inbox)

Archives are clonable: git clone --mirror https://inbox.libre-soc.org/libre-riscv-dev

Example config snippet for mirrors


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git