---
crowd-funded eco-conscious hardware:
https://www.crowdsupply.com/eoma68
On Mon, Nov 27, 2017 at 8:27 AM, Dr Jonathan Kimmitt <jrrk2(a)cam.ac.uk> wrote:
Dear Luke,
Thank you for your contribution to the discussion.
thank you for replying so quickly. key question moved to the bottom
(for ease of context-cutting), rest is clarification / info, no actual
response needed.
I’m not sure whether damage sustained during wire bond
attachment is a limiting factor in ASIC yield,
at the very large sizes (1000+), yes it is. or, has been, some point
up until around 10 years ago unless there has been a technical
solution found since (my mentor's experience / knowledge ends/ended
around that time).
defects per square millimetre is usually reckoned to be the dominant
factor, but as you say, a large pinout implies a large silicon area, and since area grows
as the square of pin count for pad limited devices this is indeed a serious limitation.
indeed that is the most well-known case: large die == automatically
more expensive. micro-fractures caused by hitting the die hard enough
to melt and fuse the gold bond-wires is not so well-known (most
companies would not even remotely consider creating a 1000+ pin...
Monster... as their very first SoC). it is however indeed a
combination of both factors.
i was extremely lucky to have been trained over a 10 year period by
someone who really, really knew what they were talking about, and who
had first-hand experience of the development and mass-production of
ICs.
many people are not aware for example that 95% yields are not
achieved through one single "thing" jumping the yields from the
initial low figures in one fell swoop, but by applying fifty to a
hundred *separate* improvements, each of a half to one percent, over a
long, long time, fine-tuning a DEDICATED fab line over many many
months of mass-production to producee ONE specific set of masks for
ONE specific customer. any interruption in that process means
throwing everything away, as even changing over to a new set of masks
means disturbing the setup and wasting the time spent on the
optimisations.
it's tricky stuff! :)
Turning to your main point, the ingenious use of multiplexing to
boost
the available uses of the chip,
it's pretty much standard practice, right across the board, both in
the embedded / MCU world (ST, Atmel) and in the 32/64-bit SoC world:
TI, Freescale/NXP, Rockchip, Allwinner, Samsung, Nexell - any SoC
which *doesn't* reduce pincount (and cost) by multiplexing is...
well... it's going to be cost-competitively on the heavily negative
side.
I wasn’t able to identify where the mobile dynamic memory would
be connected (is this redundant in your hardware architecture?)
you mean DDR3 / DDR3L / LPDDR3? that's in
http://rhombus-tech.net/riscv/shakti/m_class/pinouts/ "Fixed Pinouts",
2nd section. it's by far the largest part of the "non" multiplexable
set of pins, some 80 or so just on its own excluding VCC/GND (an extra
20).
and you must realise that any kind of multiplexing of JTAG with other
functions is a no-no if boundary scan is to work properly.
ah. Allwinner, Rockchip, and many others have achieved it, so it's
definitely technically doable. note the inclusion of "JTAG_SEL" on
the pinouts, which will "pre-set" the pin-mux at boot time with one
preset value to directly expose the JTAG function onto one set of
pins, or another preset value to put them onto alternative pins,
depending on whether JTAG_SEL is hard-wired to GND or VCC (or left
floating / on a jumper header on the PCB, whatevery you like).
so it *appears* that JTAG is not actually multiplexed as far as the
actual internal hardware is concerned. it just means you have to be
careful about the boot process.
as mentioned in the publication i wrote: the advantages are
significant. as both Allwinner and Rockchip (at the very least) have
done: by multipllexing JTAG (4 pins) onto SD/MMC (6 pins) plus a UART
(2 pins), then making sure that that external SD/MMC (6 pins) is an
*EXTERNAL* socket on the PCB, you no longer need to crack open a
production product, breaking or smashing its hermetically-sealed case
for example, in order to debug it, reverse-engineer it or replace its
proprietary firmware (which _will_ happen at some point... *sigh*....)
it's so prevalent a technique that there are even
microsd-to-JTAG-plus-UART break-out boards available on aliexpress, of
all places :)
strictly speaking a JTAG_SEL pin is not actually necessary: the
practice of selecting *either* pin-mux (default) onto SD/MMC alongside
UART *or* pinmux (default if JTAG_SEL=LOW) onto SPI (4-to-4-pin) is
one that is utilised in nearly every Allwinner SoC, but it would be
perfectly fine to drop the JTAG_SEL pin and mux with SD/MMC alongside
UART.
howeverrrr.... if you *don't* do that, and you have to use that
specific SD/MMC for connection to an *internal* peripheral, you're now
stuffed :) you don't have any JTAG capability at all.
sooo... insteaaad.... you'd need to select JTAG_SEL=low, there, and
dedicate the mux'ed pins with the SPI interface.... SPI2 i believe in
this case... and that's why SPI2 has *multiple* exit points, so that
you can, if you need SPI2, put SPI2 out...
... you get the idea, i'm sure: it's actually extremely complex, and
it's really *really* necessary to think about this in advance, planned
completely and comprehensively from the "target markets".
Any discussion about possible uses needs to start
with an analysis of market opportunities
aaabsolutely. absolutely, absolutely, absolutely. so that's exactly
and precisely where i started from, in the (very rapid) discussions
with the head of the shakti project, about 10 days ago.
and riscs (sic) and we had in mind some sort of
embedded/IOT/teaching
computer rather than low-end laptop.
it turns out that, as you can probably see from the example pinmux, a
laptop / netbook (which need not actually be considered or called
"low-end" at all - the Acer Chromebook C201 _vastly_ outperforms Intel
Atom "laptops" 50 to 100% over its price bracket, and it uses a quotes
low-end quotes RK3288 processor), is actually a subset of the much
more complex embedded/IOT markets.
in essence: if the embedded/IOT/teaching planned pinouts *happens* to have:
* RGB/TTL video (opencores vga/lcd controller being the simplest /
quickest way to achieve that: btw i have access to *FULL*
GPL-compliant linux kernel driver source code to match it - you won't
find anyone else in the world who can make that available to you
without some sort of financial / time cost),
* SD/MMC
* I2C
* SPI
* UART
* GPIO
* USB
then... errr... that happens to be the *exact* set functions needed to
create a laptop! :)
interestingly, absolutely every single one of those functions is
available free of charge, BSD or LGPLv2-licensed, on
opencores.org
(references in the online document i've published).
so.
key question is at the end.
"embedded" is a very general term, it can cover industrial purposes
(for which CAN bus - patented - and lots of full UARTs, ADC, DAC, PWM
and on-board timers are generally needed) or other markets (you only
have to look at the proliferation of parts from e.g. ST to appreciate
quite how large the embedded market is)
"IoT"... a silly, silly name, but hey, what can you do? :) basically
it means nothing more than "embedded".... :)
"Teaching".... again, quite general: what's the goal, there?
targetting the arduino-level or the beaglebone/1ghz+ embedded
processor level on credit-card-sized form-factor level? [i don't like
the hypocrisy of the rbpi foundation trying to "teach" children that
it's ok to explore and educate themselves so far... but if they want
to explore the ARC-based GPU/VPU they CAN'T... because of DRM,
RIAA/MPAA-sponsored cartelling, *plus* patent licensing issues on
video CODECs, so prefer *not* to refer to the raspberry pi in any way.
bit of a sore point there, you can probably tell...]
anyway: question moved to the bottom.
Your final point about payment is a tricky one.
"in kind" is perfectly fine, i forgot to specifically emphasise the
"third person nature" of the goals that i seek. whomever or however
achieves the libre and ethical goals i seek to [third person] see
achieved, is completely irrelevant for me.
i've discussed this before with some of the team members (off-list, a
year ago): one of the "concrete", non-financial and indirect ways that
i would not only be happy with but would instead be completely
delighted with would be to ensure that that planned SoC covers - in
full - the EOMA68 hardware specification.
EOMA68 is actually very basic. expressed simply (details and niggles
are on the spec page on
elinux.org): 18-pin RGB/TTL, 1x I2C, 2x USB
(via 1x plus a 2-port USB Hub is perfectly fine), 1x UART, 1x PWM, 1x
SPI, 1x SD/MMC, 4x EINT-capable GPIO, plus the capacity to pin-mux the
EINT, I2C, UART, PWM, SPI and SD/MMC over to plain (non-EINT-capable)
GPIO.... errr... that's basically it. it's hardly burdensome, and if
you look at each of the interfaces, i think you'd agree that any
embedded/IOT/teaching SoC that did *not* have those exact same
interfaces as part of a subset of its overall functionality would....
ultimately... not be very well received.
last time i spoke (privately) to the team, i believe that the only
function that they explained they were missing was SD/MMC, and since
then a full SD/MMC interface (non-SPI-compatible) with linux kernel
source driver code has turned up on
opencores.org
But we can’t accept contributions that are non-free
well that's good, because as a software libre developer and advocate
i wouldn't *want* to contribute in a proprietary fashion. no, that's
nowhere near strong enough: *if* i got *one whiff* of any evidence
that the lowRISC team was *remotely* considering turning the project
proprietary, i would IMMEDIATELY terminate all and any involvement,
endorsement and assistance. and would be quite... annoyed. the sole
exclusive reason why i am currently utilising proprietary SoCs is:
there aren't any good libre ones.
in the search for ways to help you, i've already weeded out several
sources of hard macros that are proprietary, and have spent
significant time tracking down one last major piece: a
libre-compatible / libre-licensed DDR3 controller. the PHY
unfortunately is still yet to be done, and i have been made aware that
the Shakti Team has, as one of its goals, to do precisely that:
implement a completely BSD-licensed DDR3 controller and PHY. that's
*in addition* to the other group having already implemented a
license-compatible DDR3 Controller.
Regarding the date of 2017 for the crowdfunding silicon I
can confirm that date has slipped again.
it happens :) i'm keenly aware that technical projects require some
form of 100% implemented proof-of-concept before they can be accepted,
and if the proposed interfaces have not been clearly defined and 100%
selected *and proven* (if nothing else in an FPGA), there's *no way*
that it would even be *sensible* to approach a crowd-funding company,
let alone consider starting a campaign.
btw if you're not already in touch with him i am more than happy to
introduce you to joshua, of crowdsupply. they have a much better
technical grasp than the "yeah we don't give a damn unless you're one
of our special mates" kickstarter, they actually *support* and
*empower* you because the team actually care, and they also convert
the crowd-funding page to a "preordering shop" afterwards and much,
much more. since the EOMA68 campaign (and after the fuss with purism,
which i helped them to clear up, particularly with the FSF who were
*really* pissed due to some key misunderstandings), Crowdsupply's
experience and support for Libre Projects has become second to none in
the entire crowd-funding world.
But you may see lowRISC incorporated into other company’s products
before we have our own chip, depending on their particular requirements.
i'd be interested to hear, if you have any recommendations (private
off-list or otherwise) of companies that would be keen to benefit from
the increased exposure and market share that could be achieved
through, for example, joint crowd-funding campaigns involving the
simultaneous creation of an EOMA68 Computer Card utilising their
planned SoC.
Backend engineering is an expensive, labour intensive and somewhat
dull task,
which is made easier by better quality front-end design, which is our focus at the
moment.
ha :) perfectly understood.
so, here's the key question, all the above is background / clarification.
would you and the team be happy to go into details about what the
proposed target markets are? some scenarios would help lock it down
pretty quickly. what kinds of peripherals and sensors are expected to
be connected in classrooms / universities. which segment of the
embedded market is to be targetted. what are the usage scenarios for
the IoT market.
from there, it's a pretty straightforward task to identify exactly
which interfaces (and how many) are required. from *there* it's a
simple matter of iterating around an adaptation of pinouts.py to
create a suitable pinmux, if indeed one is actually needed at all,
depending on the speed / bus-widths that the I/O minioncores could
cope with. the reason i mention that specifically is: if a 200mhz
48/64-bit-wide SRAM bus is required for one of the target markets, for
example, a minioncore may not *actually* be capable of handling either
that wide a bus (without special extension to its instructions), or
have the kind of instruction-set bandwidth to cope with bit-banging a
200mhz bus clock rate, particularly if it's in 45nm and is only
running at say only 500mhz.
this kind of analysis is what i'm good at. some people would
consider it... labour-intensive or simply... far, far too many
variables to cope with: i quite like it :)
in this case however, given the very specific focus that the team
currently has, it would be almost a dis-service to pull them off of
that, i've read the articles about the effect that context-switching
has on human neural structures / brain chemistry. the results are: a
dramatic drop in productivity.
l.