2011年9月30日 星期五
Free IP Cores
Free IP cores download
http://www.provartec.com/free-ip-cores
http://opencores.org/
http://www.fpga.com.cn/
http://www.lug-kiel.de/links/details/hdl.html
http://www.fpga4fun.com/
http://www.gaisler.com/
2011年9月27日 星期二
PYPY toolchain case study
-input program(python)
-output(#c,java)
-flow analysis
flow graph gen(block, start/exit/exception, condition)
block(operators,values,result->pointer map)
block(list, input, exit, def, use, alive)
-annotator
class def(SomeObject, IntegerObject, StringObject...)
class def(SomeList, SomeTuple, SomeDic...) for high level
analysis pass(map flow graph(High level) 2 low level graph)
-Rtype()
Rtype def(int,float,char...)
low level optimization(malloc remove,func inline,stackless)
-lltype()
lltype def(LLVM based)
2011年9月26日 星期一
2011年9月20日 星期二
2011年9月19日 星期一
Handle-C
Handle-C 一種高階的HardWare語法, 有點像是把Hardware的Driver寫成API 的語法,讓使用者能透過這些API,直接控制硬體的行為模式.不過缺點就是Platform被綁死,而系統的最佳化取決於架構的型式.
-hardware keyword(token) type() : unsigned, signed, length() : int <3>, [3:0] size() : [10] unsigned 4 RAM[4][4]; 4*4 4 bits RAM -logic/arithmetic &,/,^,+,-... -interface definition -module keyword RAM,ROM,BUS,... -method/processor pra : parallel seq : sequence par { { a = b; c = d; link ! x; } link ? y; } /* cycle Branch_1 Branch_2 1 a=b; delay 2 c=d; delay 3 channel_out channel_in */ -special keywords <- Take LSBs \\ Drop LSBs @ Concatenation x = 0xC7; y = x <- 4; // y = 0X7 z = x \\ 4; // z = 0xC x = y @ z; // x = 0x7C -standard library static extern volatile extern "C" int printf(const char *format, ...); -try except(reset) try ... reset try { a = 1; } reset(_condition) - RAM Bank/Bolck Check x = y>z ? RamA[1] : RamA[2]; // fail x = RamA[y>z ? 1 : 2]; // pass -Functions and macros: functions : not recursive macros : recursive macro expr multiply(x,y) = select(width(x) == 0, 0 multiply(x\\1,y<<1) + (x[0] == 1 ? y : 0)); a = multiply(b,c); a = ((b\\3)[0] == 1 ? c<<3 : 0) + ((b\\2)[0] == 1 ? c<<2 : 0) + ((b\\1)[0] == 1 ? c<<1 : 0) + (b[0] == 1 ? c : 0); a = ((b&8) == 8 ? c*8 : 0) + ((b&4) == 4 ? c*4 : 0) + ((b&2) == 2 ? c*2 : 0) + ((b&1) == 1 ? c : 0); delay // clock cycle -Platform type set family = XilinxVirtex; macro expr DoThis() = select (__isfamily(XilinxVirtex) : DoThing1() : select (__isfamily(AlteraApex20K) : DoThing2() : select (__isfamily(MadeUpDevice) : DoThing3() : DoThing4()) ) ); -Clock timing ram unsigned 8 ExtRAM[16384] with { offchip = 1, westart = 2, welength = 1, data = {"P1", "P2"}, addr = {"P9", "P10"}, we = {"P23"}, oe = {"P24"}, cs = {"P25"} }; -diff Clock interface FIFO/PORT/BUSRef:http://babbage.cs.qc.edu/courses/cs345/Manuals/HandelC.pdf
2011年9月15日 星期四
hyper block
Spark
Parallel synthesis
http://mesl.ucsd.edu/spark/download.shtml
xPilot
Parallel synthesis
xPilot: A Platform-Based Behavioral Synthesis System
hyper Block
Mitrion SDK PE
The Mitrion SDK PE is a complete development environment for Mitrion-C applications. It includes the Mitrion-C compiler, a graphical simulator, documentation and examples. You can use the Mitrion SDK PE to develop and simulate applications for the Mitrion Virtual Processor without having access to any FPGA hardwareimpulse-c
http://www.impulseaccelerated.com/
http://www.impulseaccelerated.com/Tutorials/Basic/Tutorial_Basic_HW_Gen.pdf
handle-c
http://en.wikipedia.org/wiki/Handel-C
src carte
rctoolbox
cpsr (the current program status register)
spsr (saved program status register)
http://www.eetimes.com/discussion/cole-bin/4217014/Digging-for-gold-at-the-ESC
2011年9月14日 星期三
2011年9月2日 星期五
Jacquard @ Eclipse synthesis tool
features
1. IP lib support (Add, Sub ...for xilinx)
2. automatic insert (double click in GUI)
3. optimization
3.1 high level
loop unrolling, fusion, inline, reduce , divider/multiplier elimination , array...
Ref: http://www.jacquardcomputing.com/roccc/tutorials/4-optimizations/high-level-optimizatons/
ex:
constrain @ if (*) latency > 1 unit cycle.
method @ operator bind (<<,(recourse)+,(recourse)-)
ps : a*5 = (a*4) + a = (a<<2) + a
a*7 = (a*8) - a = (a<<3) - a
or
(32bits)a = (32bits)b * (32bits)c = (16bits)b * (16bits)c
method @ operator width reduce (32->16)
3.2 low level
operator balance, copy reduction, fanout tree gen ...
ref: http://www.jacquardcomputing.com/roccc/tutorials/4-optimizations/low-level-optimizations/
ex:
c = sum(a,b);
...
e = sum(c,e);
@ system call (sum)2 times,
@ methods resource bind & schedule
4. external ip wrapper
http://www.jacquardcomputing.com/roccc/tutorials/5-advanced-usage/intrinsic-usage-and-management/
5 testbench gen
6 protocol interface support
2011年9月1日 星期四
訂閱:
文章 (Atom)