[Cryptech Tech] Alpha board strategy

Павел Шатов meisterpaul1 at yandex.ru
Thu Feb 19 14:22:46 UTC 2015


On 19.02.2015 14:27, Joachim Strömbergson wrote:
> The purpose of the alpha rev one version is to get to a real board as
> soon as possible, not spend more time to find the perfect CPU.
>
> Selecting the i.mx6 makes sense because we know that we can run cryptlib
> on it now, and that we know how to interface the FPGA with it. Being
> able to easily port your EIM interface to other FPGA architectures was
> one factor that we considered.
>
> There are tons of ARM-based MCUs out there. Unfortunately many of them
> are tergeted for embedded systems and includes a lot of functionality to
> reduce the cost in those applications, functionality we don't want to have.
>
> If we can get the CPU core in the MCU to run at full speed without
> binary boot code (which the RPi requires) we might have to live with
> having excess functionality for the time being. If we really want to
> have our own CPU design with just the peripherals we need we probably
> need to use a soft core in a FPGA.
>
> But if you know of a very clean A9-based ARM MCU then please tell us.
I haven't worked with ARMs for several years, so I can't recommend 
anything. If you haven't found anything suitable, then let's use i.MX. 
We can change it later if we want.

>
> We want to have at least 2x headroom compared to LX45 or C5, probably
> more to be on the safe side for the first iteration. This is why I
>
> 2.4) To compare Spartan-6 and Cyclone-V capacity we need to
> understand what Xilinx's Slice and Altera's LE are. I've attached a
> table with corresponding calculations. Fundamental elements of an
> FPGA are LUTs and FFs, so we can convert from slices and LEs and
> compare. I was able to fit five instances of SHA-512 core in Novena's
> LX45 device. Joachim, could you please try the same say in Altera's
> A5 device (roughly equivalent to Xilinx's LX45) to compare?
> I can instantiate less than at least 8 SHA-512 cores in a A5 device. One
> A7 _should_ be able to the biggest design given by a use case.
Excuse me, but I still don't get it. If you want 2x capacity of LX45, 
you can use LX75. If you want 2x capacity of C5, you can use C7. You can 
use older Cyclone IV which is about 4x capacity of C5. You can even use 
Artix-7 which is huge. Joachim, do we have all the cores that we want to 
use in our Alpha Board? If we do, then let's just compile them all and 
write down how many logic they require. Then for every use case we can 
add up corresponding numbers and pick the largest value. If it fits in 
one single FPGA, then we most probably don't need another one. Do we 
have all the cores already written? Can we do this calculation?

>
> Yes, F484 package is a good choice. Almost possible to solder by hand if
> one does not have 40+ year eyes.
Err... To reliably solder that large BGA by hand one probably needs 
X-ray capable eyes :)

> It is also a question on who we can find to do the board design. Randy
> wants to try to find people in Asia. And what Bunnie has suggested is
> that you decide on type/brand of CPU (Freescale i.mx6 for example) and
> then find the person with experience of doing board design for that
> device. If that person find it to be much easier to do board design with
> Xilinx tha Altera, then we may have to reevaluate.
To produce actual Alpha Boards we need to follow this plan:

1) Decide on what components to have in our board. We have no other 
variants, so the CPU will be i.MX. The FPGA is being selected. What else 
do we need? Ethernet PHY, memory, etc?

2) After all the components are selected, we need to capture schematics 
of our board. Can we re-use bunnie's design? We can take CPU and power 
supply from Novena and add another FPGA (or two) to it.

3) After we have schematics, we will need some additional information to 
start actual layout (desired board dimensions, location of connectors, 
position of mounting holes, silkscreen color, logo picture to place on 
our board, etc).

4) Find a person/company to do the layout.

5) Find a company to manufacture boards.

6) Buy components and find a company to solder the boards.

I can help you with steps 1-3 and prepare schematics along with 
additional information that will be needed to do the layout. I do not do 
layout jobs remotely, so we need to find someone to do it, but I can 
review the finished layout when it is ready. Xilinx/Altera experience 
plays an important role during step 3, as you need to connect all the 
components the right way. Once you have complete schematics (netlist), 
board layout becomes more of a mechanical process, routing Xilinx PCB 
doesn't differ much from routing Altera PCB.

Steps 4-6 are closely related. Basically we need to do three operations: 
layout, fabrication and assembly. One thing to consider is that we need 
to know fabrication capabilities before layout is started. If we find a 
company that can only produce boards say with 0.2 mm wide traces and our 
layout has 0.1 mm traces, then we will not be able to fabricate our 
boards. Another important thing is that to assemble our boards we will 
need bill of materials (BOM) and assembly database with locations of all 
the components. So, after step 4) we should have a set of Gerber files, 
NC drill files, BOM file and assembly database (most probably ODB++ 
file). We need to be sure that the company that will solder the boards 
for us accepts assembly database format that we receive after step 4).

The best solution is to find one single company that can do the layout, 
fabricate the boards and solder them. I've only dealt with Russian 
companies, so I'm afraid I can't recommend anything right now in Europe. 
Do you have any variants?




More information about the Tech mailing list