找回密码
 注册
关于网站域名变更的通知
查看: 312|回复: 1
打印 上一主题 下一主题

#技术风云榜#ORPSoC调试环境的构建

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-11-20 16:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
" ~( d& o! Z4 i3 A0 k
引言
$ O7 M2 z# L/ @, I8 q; X( d8 p- G0 c& ]4 Q2 K* o
之前我们在PC上构建了ORPSoC的仿真环境,通过仿真环境,我们可以观察任何模块的工作波形,极大的方便了问题定位和错误分析。但是,“是骡子是马,拉出来溜溜”,只能看看仿真波形显然还不过瘾,我们还需要用FPGA板子跑一边才行。但要想在板子上运行和调试软件,最方便最直接的方式就是用gdb将程序load到内存,进行调试运行。本小节就以ML501板子为例来说明OpenRISC调试系统的构建过程。; L7 j3 {6 _  Q; K8 b8 h
: H2 a; n, b+ F1 |4 l* x7 {: N

& I7 P- Q, [/ S) `) J1,  调试系统结构
+ F4 c9 a! A9 s( n# f
8 w4 z& b. }( m: F8 v/ ] 4 h( `3 P, d* g* y& y

' Y3 F+ {4 Y! x2 d" B2 {5 K1 P其中棕色模块来自advanced debug system,PC端用的是orpsoc的vox的ubuntu镜像,蓝色模块来自ORPSoCv2 for ML501。9 ^1 v8 Y% j' O5 {! x; v
  n1 N  i3 K; |; i! w/ j6 ~5 x
0 J5 w! @) s* `$ n0 x- F4 J

8 o  k1 ^; w+ c7 y" x# L# q+ u9 E/ K1 E2,  资源准备
# u- ^9 O3 t/ D0 y5 y* B% {& L4 Q; E, H  Y, b
a,Ubuntu镜像* E1 _6 k4 z0 c3 @2 Q1 p( d8 Q
/ _) \" Y6 u" s7 D* v+ r3 x
http://opencores.org/or1k/Ubuntu_VirtualBox-image_updates_and_information
$ d& E- H7 M1 k( u# H5 E+ W# u
2 l) m5 r0 I" \9 p/ a  T8 f) Q0 L( `b,adv_debug_sys
/ E1 e5 }6 _& V- P* P3 F3 F2 R. V9 L+ Z
http://opencores.org/project,adv_debug_sys* S1 Z. o. Q2 g- x
, P* U' ]  d, L1 ^% Y+ \  f
c,ML501板子及下载器。
* v# k0 K4 r/ G* A
8 y) W7 ]( l9 ?  C3 z' P/ F1 ? http://www.xilinx.com/products/boards-and-kits/HW-V5-ML501-UNI-G.htm# f( A3 U( E" g  i
9 d- s! Q$ c& |% Q! ^( R& w

) [+ b% s* C- D- J2 I2 q2 f
$ z) e0 W8 F  x; F, ?5 ?3,  调试环境的构建% C5 Y2 U  m- d' g2 W# a9 u6 D

% W( E. ]4 S; t6 e1>    安装adv_jtag_bridge  s/ [; \: L' `+ h+ r- Z
- W0 t  D- S* a6 z
解压:# ~4 f. C7 X# J4 ]0 c
! Q3 [* q% {" ~7 x% g
tar xvf adv_debug_sys_latest.tar.gz3 @: M& }( w7 p* e2 z8 ~& ]* g

2 E/ k  E* g& Q$ A安装:
9 o. ?8 q" p% [/ i( z8 o: B
! j2 }( L+ N( y% ^. t+ ^" e$ D6 |cd adv_debug_sys/trunk/Software/adv_jtag_bridge
$ _, U) I. J$ S9 }./autogen.sh
, b- g+ k; {+ p; T# e1 E& @./configure: O# }. o+ q7 p# s% W+ t
./make, S0 L4 P* w% b( z' |; X4 r$ j
./sudo make install' ^( T' q1 C5 P! W6 \4 {7 l( V1 \

. ~6 V, L0 W( Y0 R2 R; I/ N4 g# ^9 u: c, c+ i3 c
2>    在windows下构建ORPSOC针对ML501的ISE工程0 w. ^3 ~. B8 p

1 {, ]( J* R4 a4 o  S( Z6 LORPSOCv2的工程有两种方式,一种是在linux下,另外一种是在windows下。
( `) S1 @& \, k2 ?2 z  V2 s4 T8 \7 l; [. N6 ]) C% ^1 `$ z; ?4 V5 u
linux下的工程,前面已经介绍过了:http://blog.csdn.net/rill_zhen/article/details/16880801
" [% Z2 `! n) x; f6 f/ I( C# X; @! S  U: K
安装完ISE之后,就可以综合了。+ j+ i" \- r, Z+ S' k
# T5 c& L* X  c
下面介绍windows下的综合,0 E! ^- ~3 @$ s& |* [0 d( a
& ]" i* ~/ Q/ A# R
首先根据linux下的ise的prj文件,将对应的所有文件copy到windows下。
1 ~) i) w! E. b* \' a; @* m  K' Y: a- L* j* M2 z
prj文件内容如下:& O/ O4 u  n3 n- K+ w1 Z

* S- z3 @+ r) x& A7 |orpsoc.prj:
: T8 I3 ^9 j/ ?  W/ Y& [0 g8 ?: Y
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/arbiter/arbiter_bytebus.v+ V& r* x+ G- Q1 y
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/arbiter/arbiter_dbus.v9 N" n/ p+ _' }0 _% N
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/arbiter/arbiter_ibus.v
* Z: v  g$ [8 [6 R. ~1 ~9 ?% H% q3 Gverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/clkgen/clkgen.v
5 n/ R0 U6 U3 d9 @4 Y; D. w3 W' Kverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/gpio/gpio.v
, e: S, E: A  J& I( i8 G; a: s) u- gverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/lfsr/lfsr.v
3 P1 ?  o# n. l- J' uverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/orpsoc_top/orpsoc_top.v
7 V3 g3 g* f: s9 c$ y( iverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_chipscope.v% C6 T! V  S7 X8 J1 _5 s
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_ctrl.v' e) u6 R* S1 D) w1 F0 L
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_idelay_ctrl.v
4 y+ ]) H! {; f, A5 Jverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_infrastructure.v* ^1 S& z; ^: W
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_mem_if_top.v& j% d% D! F/ y
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_mig.v
5 t: U$ _7 g7 v3 v% Xverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_calib.v& p! \6 O) G" q( V1 W
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_ctl_io.v
# Z( ]& c  }' Z8 tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_dm_iob.v2 @7 k8 T) b$ y3 T. X
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_dq_iob.v
+ u+ V% Y& P( G. lverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_dqs_iob.v- W! n3 q- U2 E# v$ o# ]
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_init.v
: s  Y3 B/ w- A# J$ _verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_io.v
) B# R; T9 |. p3 y# f5 X/ ]. y7 xverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_top.v7 k2 A+ v# C7 u5 p1 C& h+ x1 s
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_phy_write.v
( K4 B0 X3 o- {' g2 Rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_top.v
# O& h; E: D7 R! \- Sverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_usr_addr_fifo.v) f  V! T1 x' V! n3 c* a8 _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_usr_rd.v/ w# ^) d5 n  [- ?7 L$ I
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_usr_top.v% d9 F; B4 f  A% I
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/ddr2_usr_wr.v* f1 t; `" n/ N1 Q
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/xilinx_ddr2_if_cache.v
) ?' R- c3 g" v' S* F2 P3 ?verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/xilinx_ddr2_if.v
% C; ?6 A) D" c! x4 \$ Pverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ddr2/xilinx_ddr2.v
1 z1 b! p/ r2 C6 {verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../rtl/verilog/xilinx_ssram/xilinx_ssram.v
8 h$ q; |; `8 b) A' Q2 pverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/cfi_ctrl/cfi_ctrl_engine.v: `8 u/ T0 m; \/ w8 S6 r
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/cfi_ctrl/cfi_ctrl.v
$ u8 T& S) `' mverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_cpu_registers.v
. A/ h# J/ S9 f) h  rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_cpu.v
- U# ?- r1 }5 t4 B7 G) y& T6 Kverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_crc32_d1.v
( x8 {  T8 E, X2 m9 Fverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_if.v3 ?+ |8 ]8 i  m
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_register.v
! ~5 x$ R1 e0 U- B+ xverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/dbg_if/dbg_wb.v- b; n; _, y8 \6 n1 v% L: h/ B
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_clockgen.v1 T4 K4 A+ Q5 a7 T: [) u& e% S7 j
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_crc.v
  n/ q% K" ?: H* K3 gverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_fifo.v5 L/ I1 d' ^: w, @5 K+ E
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_maccontrol.v
* X5 S% ]+ z& @0 t; `verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_macstatus.v
2 E, R2 n8 c) p4 w9 N3 f# b/ Everilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/ethmac.v
& R0 p/ {0 m% P/ M: Overilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_miim.v
0 u" D" z( q0 Yverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_outputcontrol.v0 J8 @) S: d- n2 A3 V5 X8 h
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_random.v0 c3 t: f4 X7 b& a( {! N1 l4 U
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_receivecontrol.v7 z6 B8 V' P( \" O1 q
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_registers.v: Y- Z+ _9 g; r8 j7 n
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_register.v
% d) k3 f8 N  c# C, W5 lverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_rxaddrcheck.v1 e5 b/ b' k8 |5 t% Q; O: ^/ F
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_rxcounters.v" _. S* d: r- ^/ I
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_rxethmac.v
8 R& \) T) H8 q& z& m2 Z* \verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_rxstatem.v0 `, h& d3 M: @, ~9 f2 n) u
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_shiftreg.v
3 G( d6 ]$ D4 f7 Hverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_spram_256x32.v. }' t  {: r( c- o
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_transmitcontrol.v. H8 n; A5 n* C$ p  M4 J0 b
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_txcounters.v
' B5 ]' y, A9 Z: \* n1 cverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_txethmac.v
* ~3 w" e+ D' ]verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_txstatem.v( T2 U$ k1 B( l
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/eth_wishbone.v" L0 ]+ ]* |& n* t7 E/ r
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ethmac/xilinx_dist_ram_16x32.v0 s( |6 w7 _6 P. ]" t  h$ k
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/i2c_master_slave/i2c_master_bit_ctrl.v4 q: o$ E0 n* N8 h! Y3 o( G( b( o: J
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/i2c_master_slave/i2c_master_byte_ctrl.v1 c8 F, A# U: `) B& C5 F7 d
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/i2c_master_slave/i2c_master_slave.v1 ?) o: }3 Z* W4 e1 }6 ?% |: v
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/intgen/intgen.v
* J, ?* z  |& Mverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/jtag_tap/jtag_tap.v
5 B7 d0 P/ A% S1 o, }" Vverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_alu.v
7 k$ t' ]  l1 {8 Rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_amultp2_32x32.v
3 {6 Y7 W+ H7 r+ ~- M4 J# [verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_cfgr.v
$ ~" `( l4 f( s" O0 Cverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_cpu.v
" U" y4 g+ l8 d2 }( p3 Sverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_ctrl.v
7 W& y$ v/ g" tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dc_fsm.v
7 q! q% |+ I. K) k& Z/ W+ G6 Lverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dc_ram.v! z0 @( u: I& K2 K4 ~& C$ L
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dc_tag.v
/ X) N3 R3 }  ]1 j2 B- k: lverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dc_top.v
! @: A4 j! h" y2 s7 tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dmmu_tlb.v
; A! z# l4 E5 W4 M; Q6 averilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dmmu_top.v
7 b/ g, g& f$ `8 g% g5 R  f4 b$ X  ^verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dpram_256x32.v
9 _  H" @3 R, J: L! h( Zverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dpram_32x32.v
- l+ E4 @6 v& M1 B1 D, |4 sverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_dpram.v
) V2 @4 P0 ~, L) [verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_du.v. |2 H3 G, G5 S. V1 R# S" g
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_except.v
) g% |0 r: X5 I; Bverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_addsub.v7 L2 _4 t8 u3 B% g2 |, {" _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_arith.v& s# z/ x* b5 Q6 Z/ Z4 _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_div.v
! A# R. B1 k+ wverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_fcmp.v$ i; q$ j, Y% k) `9 t
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_intfloat_conv.v
- q' ~' p- i( o. q4 yverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_mul.v
2 M- i4 V7 c" o8 Q% nverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_post_norm_addsub.v
) V( S, y! t6 ~verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_post_norm_div.v
; C  r+ q  H0 S" xverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_post_norm_intfloat_conv.v0 @2 D- H9 K3 \; s2 P0 d
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_post_norm_mul.v
* K. \5 V: o' T1 Pverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_pre_norm_addsub.v% s5 x4 G. D9 [5 t8 A- d5 t1 ^
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_pre_norm_div.v$ I% w$ _; F' y1 C! k7 ]1 y
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu_pre_norm_mul.v
  J4 @4 }. A/ e; J0 [verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_fpu.v8 y6 v& I, s0 Z4 ]/ R$ w
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_freeze.v
3 i$ I) u8 P! xverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_genpc.v
$ _. Y& l* q( ~( ~! ~) ~verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_gmultp2_32x32.v4 L+ W3 J" P% j7 i  k
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_ic_fsm.v: I/ C' ^7 \4 X/ N/ ^
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_ic_ram.v
2 R! {0 A1 b. f8 V# W/ T9 D+ K5 averilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_ic_tag.v: d  I* p, @% s: B: c3 k0 v
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_ic_top.v
8 ]0 l% S4 M* h; ?# Kverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_if.v& X# T- _3 m/ F$ q
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_immu_tlb.v
  P7 b) z% i, w2 m5 Yverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_immu_top.v" @3 R' G6 {) W  @6 J+ l! B
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_iwb_biu.v
+ v0 I  m$ G9 o7 rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_lsu.v
4 v& E6 w. `* N+ z! Y  Overilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_mem2reg.v- l5 v3 d! o. ^( G' `
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_mult_mac.v( U* k2 ]# k5 I9 G5 j. m! ~; ?
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_operandmuxes.v
0 b; I" X# m* G: u; a5 Gverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_pic.v% [- u# q( e: q: r0 V5 R. I% T
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_pm.v
/ T1 C5 O1 c, Pverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_qmem_top.v- ^; u9 Y" X  s
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_reg2mem.v& W* s3 S+ g' z5 f
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_RFram_generic.v7 U8 e# g: J0 F1 A
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_rf.v
% q8 A. L9 `1 qverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_sb_fifo.v: Z5 U; X* i  {  t, H% T
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_sb.v
+ z: {* _5 h, Z) @" J5 e% X: o4 jverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_1024x32_bw.v2 W+ J( W' Q( p7 |4 S
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_1024x32.v$ o! ]6 q1 R9 o# H1 t7 g* u- @. U
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_1024x8.v
. p) H; O0 o- y! a. y( pverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_128x32.v
, J5 ]% f) z" Q1 b/ @" mverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_2048x32_bw.v* \, o, r# a( d+ u& n$ \" e
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_2048x32.v
& |( a1 R3 h3 everilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_2048x8.v
0 d' j) A! h0 j2 Iverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_256x21.v
+ I% n8 W6 }5 {6 g9 T2 t, Everilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_32_bw.v
; m4 K% X" o: C8 A' nverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_32x24.v& P( Z# i6 `; X, ], ~
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_512x20.v
9 u  w2 H# R6 J9 N; N! J) o% Mverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_64x14.v
: h- s" G0 l" f+ ]% Z3 r& `' s% Cverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_64x22.v! O2 m% v; e9 R5 f) H+ s" j5 E1 i( k
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram_64x24.v
, _; f2 j% X2 e1 m" o. H# x: y9 ^* fverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_spram.v
7 T8 r$ i. d% x. t/ L% Y' s/ Q! M# f5 {verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_sprs.v& F: G7 t' W9 w2 @2 z* O4 X  _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_top.v
" @, V7 E" x8 Rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_tpram_32x32.v
2 v* X. B3 S, z( g' }1 }verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_tt.v
9 x' T# m( T& w( m. [% E; \verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_wb_biu.v
8 m9 a' q) L* j! A& t3 @verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_wbmux.v
1 p, F$ ]3 G! ^$ z7 ~# y1 qverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/or1200/or1200_xcv_ram32x8d.v0 M  j' D+ a' _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ram_wb/ram_wb_b3.v( i  o; b) r( i& L) z# D
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/ram_wb/ram_wb.v  I3 e6 ~* K- K" I
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/rom/rom.v
6 Z# J5 q* z1 w& Everilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/simple_spi/fifo4.v
, ]. o$ J" u% ]* v" Wverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/simple_spi/simple_spi.v, s3 N& {( K& d) d. `
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/smii/smii_if.v5 l1 |8 M; v9 ~0 h% E' j- H
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/smii/smii_sync.v
- a" @8 M0 b5 s) c8 L7 `* ]verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/smii/smii.v) Q& b; B6 A) ~, j! J) l( c# ^
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/raminfr.v( T- h7 N7 o+ z- n0 z" C4 S
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart16550.v' w- y5 o5 ^! g* m/ @
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_debug_if.v
+ _, {* N; r: i& wverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_receiver.v; Z$ x) T( v/ ~4 J, J$ D
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_regs.v
# `" L3 R7 {- overilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_rfifo.v8 j2 ~+ n. K) F' `; c
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_sync_flops.v% K" }3 R4 q3 a# {4 L$ X- _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_tfifo.v9 Z4 v3 `; e! n+ K
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_transmitter.v0 g) C# W6 k# T( r; ~' J/ J* v
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/uart16550/uart_wb.v; M* d( F3 j; I8 }. u% ?: B
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/directControl.v
- @. J+ t8 D+ ~: f6 g) cverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/dpMem_dc.v0 w1 b% F3 o& e' {& C2 x* t
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/endpMux.v
/ t! _  B7 x' U3 g; t% N! Bverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/fifoMux.v
4 _* |4 K8 w" vverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/fifoRTL.v
& U; D& @' r* ]* M( E) Fverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/getPacket.v
! F+ r0 B( U7 q: j8 averilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/HCTxPortArbiter.v
7 {) o$ w* s  G7 G) H, o- zverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/hostcontroller.v: f( r. O) i$ X' U% w* ?/ c
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/hostSlaveMuxBI.v; ^2 D: |$ O* g& V4 M' t
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/hostSlaveMux.v
3 n$ B; }3 }/ P6 i- Sverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/lineControlUpdate.v
, M8 r4 n% g) Q  m+ Dverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/processRxBit.v
5 U2 p2 [$ G1 s  _verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/processRxByte.v2 ^% j$ U* `8 m& v' \; T
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/processTxByte.v/ @: @0 a3 X, G% S7 I
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/readUSBWireData.v2 {( f0 Z5 A3 d  M% r! c4 \: |
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/RxfifoBI.v! m+ p, [, M# t" I$ h( l
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/RxFifo.v
7 L7 [' }* d  ^) ?  vverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/rxStatusMonitor.v# r1 _! E4 k& _' o4 c" m5 \# K' j! A
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/SCTxPortArbiter.v
+ D( _0 E4 S$ }( r  y; tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/sendPacketArbiter.v
+ O6 o5 K+ Q( T9 j& Dverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/sendPacketCheckPreamble.v# u! v  P4 C/ ^3 n8 ^
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/sendPacket.v4 x7 r3 t) X0 i1 Q) C8 [8 e. _
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/SIEReceiver.v
) @. z/ l. s* j+ f" y& Mverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/SIETransmitter.v
% }2 ]8 R2 C  K5 _4 o" ^8 c& v- Tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/slavecontroller.v
$ B9 V+ ?8 A% c6 E5 ^/ n9 Y% g: G7 ]verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/slaveDirectControl.v
+ F0 d# O; T: J5 Tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/slaveGetPacket.v
. \* f* C7 Z9 R& Lverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/slaveRxStatusMonitor.v
3 Q  P5 t2 b5 ?' T! P. Jverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/slaveSendPacket.v2 q0 t  e2 _5 k$ h: F5 z
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/SOFController.v
  Z7 y6 @' `5 y( |' j; K. S/ iverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/SOFTransmit.v9 Z7 v2 A6 F# j
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/speedCtrlMux.v8 h6 j/ Z) L7 ?
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/TxfifoBI.v
/ m% D+ r2 N" @+ T+ B( X9 wverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/TxFifo.v
( Y$ n6 s% }. c, H1 Dverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/updateCRC16.v
8 T7 h- y( t' R  l% ~verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/updateCRC5.v
$ y) X7 D. ^. q  b+ Tverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/USBHostControlBI.v: L: J) g9 y6 Z& h4 A
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbHostControl.v- m6 J1 p' A/ c( ?# W* M$ x
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbhostslave.v( b" `2 F9 e2 f* @
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbhost.v
2 m8 E  v/ M% z9 P! |- M2 ^% V) yverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbSerialInterfaceEngine.v' r! X5 N8 }$ Z; h4 _( d
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/USBSlaveControlBI.v
, P; ]# r" a+ E" D' overilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbSlaveControl.v
6 a9 {4 S( I2 w/ K, X, T% E# Rverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/usbslave.v' U2 M# O* s1 a7 C
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/USBTxWireArbiter.v; T( N, _6 K) `& C' }' q
verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/wishBoneBI.v
+ R1 o# O6 B# Y9 j/ q& ?6 }1 yverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/usbhostslave/writeUSBWireData.v
( V' a" _! W' p5 U5 B- ^  O$ Vverilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/wb_ram_b3/wb_ram_b3.v
' g  T3 n* Q+ W: s2 [verilog work /home/openrisc/soc-design/orpsocv2/boards/xilinx/ml501/syn/xst/run/../../../../../../rtl/verilog/wb_switch_b3/wb_switch_b3.v
5 r% \$ O, N, j7 P. [6 w  W: k1 L- d" r  i
4 G5 M* l4 E/ L2 l* ?
此外还要将以下文件copy到windows下:
0 B( I8 {5 }8 s: \' I
0 G; e" Y& p( L4 f9 H% H$ q# L; g: f$ {( F* J3 K$ ~6 P
bootrom.v,ml501.ucf,xilinx_ddr2_if_cache.ngc,synthesis-defines.v,timescale.v。: x% V0 U5 M: x% p# R

/ t" J! |- U; x这些文件都可以在~/soc-design/orpsocv2/boards/xilinx目录下找到。9 x  J( V9 U# r/ S" }/ w; ]8 s! o! |& o
& W% Q# p( k* g  l7 u
orpsoc.prj文件,在安装ISE之后,综合时会自动生成。
5 r7 _+ k: U8 t& ]  p1 E1 v/ D/ A
6 K  }# C. y) P% o+ u1 m1 i3 D所有文件准备好之后,在windows下,打开ISE,创建一个工程(需要设置芯片型号等信息),将上面所有的文件加入工程即可。
6 B+ J" b: P* ~% r% R! ~. [
  \) e9 v* v' E需要注意的是bootrom.v的生成,一定要指令ML501对应的board.h。
) E4 r1 ], [: [- s) l/ _0 n9 v& @) U
9 P0 i! [8 l: a" `1 N
" m; Z. s( {0 O# ]6 ?8 Q
; Z" s: |1 j2 r! h$ R3>    例化xilinx_internal_jtag
, q" b  W4 e' }. e- y& i- l) i5 k+ v0 q! e/ q1 y! q
orpsoc中默认使用的是单独的jtag tap,我们使用xilinx_internal_jtag。, h1 E/ |1 i0 W# G" P" W
1 s: F& J0 l- k' v# L7 Y5 R
将adv_debug_sys\trunk\Hardware\xilinx_internal_jtag\rtl\verilog中的两个文件加到ISE工程里面,然后修改orpsoc_top.v,例化之。- i' x0 k  h5 F$ k+ N* M# A

* [: T/ W# [7 R在例化之前要先修改:5 y/ ~4 {9 l5 A# f
) a9 S" @  P) e( E, T. d  x
xilinx_internal_jtag.v:由于ml501板子本身就有4个jtag device(0,1,2,3),所以我们的device id要设置成4。
0 `) F; C# a; x) i# D
- Q. q. }. q) i// May be 1, 2, 3, or 4
! r8 e4 |7 a( u) Z. H: Q' m// Only used for Virtex 4/5 devices5 |5 J0 d! X; e, x
parameter virtex_jtag_chain = 4;
9 a4 ~3 s! O( j- T' N( @
7 ^, h- }! S; {3 Cxilinx_internal_jtag_options.v:
$ I' t& e# c3 O5 \; o+ i- x' z! t" X5 O9 w# h3 E# |* _& _, M  o
//`define SPARTAN2' Z, F% _+ w3 x, h; o4 g+ W9 b
//`define SPARTAN3  // This is also used for SPARTAN 3E devices
5 I  }$ J0 b: h% y& y//`define SPARTAN3A: Z$ m1 v) r: i' j. t
//`define VIRTEX
- K3 e0 I2 R& P2 Z3 v//`define VIRTEX2  // Also used for the VIRTEX 2P
$ U5 j: g) u7 l//`define VIRTEX4
; B1 q; E; o% ~+ U  \`define VIRTEX5, o+ n4 S, e& e. M- W
. r5 J( Z; p! J9 W; ]7 Q4 K
$ ?/ \4 \' i; W
例化:orpsoc_top.v:5 ?2 r/ m0 [6 F2 i- V

4 H7 O/ t1 m- o) R/ C! ?/ g% p+ j`ifdef JTAG_DEBUG   
0 a" Z# {3 A  @! X& M8 c# q   
# k0 f+ `9 G6 x4 z1 ~   /// y4 C6 F8 d+ _8 v6 Z5 V8 j: {
   // JTAG TAP
# E8 x% Y3 [: S# D* L: s) g   //
* ~1 o0 f- f" {! E# t; D( c) V- }   
: M- I# _4 i% |8 Q; ~/ ` 6 m3 X6 T6 i6 a& Q. R  Q3 S1 b
   //# Y) `0 }) A8 c- B' y- A
   // Wires
9 T3 c5 C' j9 ]2 ?0 k   //
) m8 l: o6 k; x! {1 n$ W   wire                                   dbg_if_select;   
) u0 G4 L4 z: a  ~3 E   wire                                   dbg_if_tdo;
# w1 i: F; E5 D4 w2 x6 R   wire                                   jtag_tap_tdo;   0 D3 s5 b! H0 D: [6 f1 G. K
   wire                                   jtag_tap_shift_dr, jtag_tap_pause_dr,
  g! l. o4 o. i7 Z6 a+ s                                          jtag_tap_upate_dr, jtag_tap_capture_dr;
. C8 g1 M5 L! e6 K  H1 N# F   //
# H, D5 m3 x/ r! H  o5 u4 y   // Instantiation
1 ^7 L! B: d5 ~# ~, J0 T2 X+ S: z% N   //
7 r$ t7 f* w6 j, v) y& Q; l        wire xilinx_internal_jtag_clk;3 V  h7 b4 q. b) Z& ~
        wire xilinx_internal_jtag_rst;$ Z  @& J' ]! g( [) z8 v3 `
        xilinx_internal_jtag xilinx_internal_jtag_rill; ^; s8 ^# T4 Z; o) s" a0 F# K0 ^
(
7 q' |/ l- j% f/ K& \                .tck_o              (xilinx_internal_jtag_clk),
! ~4 y' s( ~1 B% h1 c1 t; A                .debug_tdo_i        (dbg_if_tdo),
/ R9 P' Q9 I5 b# N. ^1 y# n0 \                .tdi_o              (jtag_tap_tdo),
5 I$ V) j" V7 J8 e0 H* L, _8 `                .test_logic_reset_o (xilinx_internal_jtag_rst),
, _; w" p& z: t9 R9 E$ m# q  Y                .run_test_idle_o    (),1 x# Z4 l' P/ `0 V
                .shift_dr_o         (jtag_tap_shift_dr),
7 F1 ?! `  g% B' U4 P# h6 h. f                .capture_dr_o       (jtag_tap_capture_dr),
9 l! O: ?$ ?! z8 o9 T& s                .pause_dr_o         (jtag_tap_pause_dr),3 w2 I3 t' H' m  Z
                .update_dr_o        (jtag_tap_update_dr),7 _( D+ l2 K: r8 R6 M7 R
                .debug_select_o     (dbg_if_select)0 A! [* O1 l& }/ z$ j- T  J' B
);& V. H6 ^5 Q- c  R( m, K; `
/*9 n; ?+ }3 B9 A) L
   jtag_tap jtag_tap0
, q! D7 J% J& j% Z. N4 i; g     (
, H5 D5 f* @  I- i, F      // Ports to pads
6 d- Q8 h% F) l2 e      .tdo_pad_o                        (tdo_pad_o),
- P- Z2 r' h( f4 z  O( b+ E      .tms_pad_i                        (tms_pad_i),: e% c# U2 K) X9 g
      .tck_pad_i                        (dbg_tck),3 W& ?" X2 r% d# h5 I
      .trst_pad_i                        (async_rst),
; H3 I+ x& ^; X) m# g' L( B      .tdi_pad_i                        (tdi_pad_i),5 H$ t7 f8 Q  \6 T
      7 A$ J9 K$ U- P+ v
      .tdo_padoe_o                        (tdo_padoe_o),( M! e/ U, w/ P: w
      & `* \8 W! I7 S
      .tdo_o                                (jtag_tap_tdo),6 |$ q  U9 a1 D$ \

6 e! A' C- s% ~# p      .shift_dr_o                        (jtag_tap_shift_dr),
. Z9 E- s+ r7 Q7 V      .pause_dr_o                        (jtag_tap_pause_dr),  [- N# A* C, H
      .update_dr_o                        (jtag_tap_update_dr),
+ M7 r1 S" T8 C' Q1 [) X      .capture_dr_o                        (jtag_tap_capture_dr),$ |2 I2 V( j& q) S3 \
      
. N8 l1 M+ n( ~/ U' I      .extest_select_o                        (),1 J6 ?8 l9 l8 N8 W- I' d
      .sample_preload_select_o                (),3 O0 k1 a: G3 \2 p% e/ w0 y; ]5 a
      .mbist_select_o                        (),. U) Z- d+ E+ i/ A
      .debug_select_o                        (dbg_if_select),
7 W& m' ^& D" u' R
8 D9 `( m8 d0 N' ]' h5 A( c      / {/ h/ ~4 y3 }8 H: ]
      .bs_chain_tdi_i                        (1'b0),! R5 k7 v' H5 l4 Q6 K' M
      .mbist_tdi_i                        (1'b0),3 V: O! M, V6 A; Q' U- V
      .debug_tdi_i                        (dbg_if_tdo)
( \* R( S1 c% a4 ?6 f, u! y4 Q      
' g. O: F9 F" q$ a      );*/, C* g) {. w+ E2 V! p3 o  k
   ( R& L6 o  z) P: L
   
0 q: @- E# }  C* A`endif //  `ifdef JTAG_DEBUG* o+ t, G2 x$ F7 f
+ u7 ?# B9 H7 U2 {- z5 E
# x! B0 t$ o" [0 b# l% n
4>    例化adbg_top
8 [& B* A( X* }1 x% P: d/ |6 r# s' F* X8 Q( b# N, ^  m
同样,orpsocv2中使用的dbg_if也需要替换成adv_debug_sys中的adbg_top。
9 x% K7 `  W: _! {( V
3 e, c9 s' K5 F( K1 a; u将adv_debug_sys\trunk\Hardware\adv_dbg_if\rtl\verilog目录下的文件加到ISE工程,修改orpsoc_top.v例化之。7 H5 v7 A/ P2 _! D* D. H7 f% E

% U, u% l" v) L  N' o" K5 {`ifdef JTAG_DEBUG
# Q$ V8 [" P  n' c1 n4 K   0 K* N# l% H7 q# b3 Z4 [( U% _3 R2 |
         //7 d$ v* l6 b  ]  z5 C9 ]+ j/ k) k0 i
   // OR1200 Debug Interface1 c* o# Z& l, L$ O
   // / G( W" j6 ~4 X+ F1 O: M
   7 I! }) T& l% l+ M$ g
         adbg_top dbg_if04 f- `$ |/ m6 i! e  k) l
     (: h8 o) y/ {+ b. m3 M6 W
      // OR1200 interface( a# D4 v8 L$ c" d: g' E
      .cpu0_clk_i                        (or1200_clk),  G2 U$ c" s; \6 L0 @& u: A. o3 t
      .cpu0_rst_o                        (or1200_dbg_rst),      : x. y8 z" {- l, z7 }6 d
      .cpu0_addr_o                        (or1200_dbg_adr_i),; Y5 x$ m1 p& u9 m% i: P
      .cpu0_data_o                        (or1200_dbg_dat_i),) d5 i% w- q' C  W6 z
      .cpu0_stb_o                        (or1200_dbg_stb_i),
0 C+ o( R# p2 E  a7 y+ M" m! ]      .cpu0_we_o                        (or1200_dbg_we_i),
, L1 a( j' `' W7 K      .cpu0_data_i                        (or1200_dbg_dat_o),- a1 y7 Z2 \5 Z2 n! k9 Y
      .cpu0_ack_i                        (or1200_dbg_ack_o),      
/ H% m9 P( K# v* p 2 g! R/ u% E; S6 y0 w& w3 D. l
, @$ K6 O: ]% @; t8 k% S& |) c" U. C* D
      .cpu0_stall_o                        (or1200_dbg_stall_i),7 d9 Y6 ?# B6 _( b
      .cpu0_bp_i                        (or1200_dbg_bp_o|(|or1200_dbg_wp_o)),      
% ]/ m2 Y/ B0 q8 L      9 F' H7 }( G, F# |8 D
      // TAP interface. d# }0 f4 r: I  a( L5 x& k
      .tck_i                                (xilinx_internal_jtag_clk),5 r" x3 o' {4 m5 ~* b0 t% ?
      .tdi_i                                (jtag_tap_tdo),* A0 K$ I5 \" Q4 m- P
      .tdo_o                                (dbg_if_tdo),      - p$ y2 H# k. H" z4 M: h7 x3 b
      .rst_i                                (xilinx_internal_jtag_rst),
" U+ h8 A& F- M# |      .shift_dr_i                        (jtag_tap_shift_dr),$ Z6 `" F$ R* ?; l0 w! }
      .pause_dr_i                        (jtag_tap_pause_dr)," D& y2 b9 E1 l- v
      .update_dr_i                        (jtag_tap_update_dr),
/ s4 n, ?% }' N) K                .capture_dr_i                (jtag_tap_capture_dr),//new add
4 A. o" O! l+ v$ m+ ]5 u      .debug_select_i                        (dbg_if_select),
' b( K* J; n) U/ J3 C' E- t5 E ( t! f8 E7 ]- V  @+ z0 h
      // Wishbone  master5 r8 m6 J2 C: W* B2 d# f8 Z' |3 ^
      .wb_clk_i                                (wb_clk),$ }6 h  K! {' W5 Q- O) B
                .wb_rst_i            (wb_rst),
! t6 y+ h, H3 T/ }4 d/ w0 P; W6 p      .wb_dat_i                                (wbm_d_dbg_dat_i),8 X% k! X" A& C- {
      .wb_ack_i                                (wbm_d_dbg_ack_i),! t# ~+ Q, p) k8 o9 Y2 X3 V% E
      .wb_err_i                                (wbm_d_dbg_err_i),
# j4 Q* z& j' C; O1 W      .wb_adr_o                                (wbm_d_dbg_adr_o),
$ U, O: z" k/ j* S; Q5 V- E% N2 E      .wb_dat_o                                (wbm_d_dbg_dat_o),9 v* ]4 `5 y" w. Q  e
      .wb_cyc_o                                (wbm_d_dbg_cyc_o),
2 u0 V% U* C4 F. D" g      .wb_stb_o                                (wbm_d_dbg_stb_o),
/ o' q% d* g- n' G; f5 a      .wb_sel_o                                (wbm_d_dbg_sel_o),
: q: L0 e, A) X0 z3 u4 ?  x* a3 d      .wb_we_o                                (wbm_d_dbg_we_o ),% J/ l4 A/ }! j. @
      .wb_cti_o                                (wbm_d_dbg_cti_o),0 o6 O$ b$ H" r% g9 t% |8 O- V
      .wb_cab_o                         (),) D. N6 B  [: y/ d
      .wb_bte_o                                (wbm_d_dbg_bte_o): v4 K' r* F8 Z% B7 h
      );
/ I' R3 [% w9 p# I+ Q   /*9 E( R" Y1 t* |1 |. @% Y3 W% D
   dbg_if dbg_if0% b5 W  L: S' J0 P
     (/ f4 ^5 w% I7 a" N& K7 ]& {
      // OR1200 interface
, Y4 [+ c$ d& X6 b) X      .cpu0_clk_i                        (or1200_clk),, D+ H, M2 S& u' [; j2 R
      .cpu0_rst_o                        (or1200_dbg_rst),      
+ k) C5 e) K+ C# Y      .cpu0_addr_o                        (or1200_dbg_adr_i),$ e& q- o" m1 ?2 u1 x: Z# L. g
      .cpu0_data_o                        (or1200_dbg_dat_i),
" q7 C! E: [5 V: H      .cpu0_stb_o                        (or1200_dbg_stb_i),
6 E( g- r1 l& k+ \) g9 n3 Y      .cpu0_we_o                        (or1200_dbg_we_i),6 [5 u7 f( ]. I
      .cpu0_data_i                        (or1200_dbg_dat_o),
2 `3 T3 i3 o- R3 L' o      .cpu0_ack_i                        (or1200_dbg_ack_o),      ' o5 P% z6 b0 ?

/ w# f0 Z* Q+ W+ i- j% b. v$ Y
  \$ Y5 s* x- S9 ^) r+ L' x2 S      .cpu0_stall_o                        (or1200_dbg_stall_i),
: @2 e3 D% r1 h) Z      .cpu0_bp_i                        (or1200_dbg_bp_o),      
$ n" X& L; t) A/ U6 x; X      ( W. k3 p  s6 Y
      // TAP interface4 B( K% S6 `$ [! c7 n# F& U" |
      .tck_i                                (dbg_tck),
$ d; |( x; {1 p2 f5 P- R      .tdi_i                                (jtag_tap_tdo),
" x+ O; G- k6 ], V: b      .tdo_o                                (dbg_if_tdo),      ' V7 Y: j4 L5 Y1 G; L
      .rst_i                                (wb_rst),
% x3 `% ?( A8 u      .shift_dr_i                        (jtag_tap_shift_dr),, g* @- C' q7 Z' h# s
      .pause_dr_i                        (jtag_tap_pause_dr),4 D5 [* U2 C. c9 d) ]8 P# J
      .update_dr_i                        (jtag_tap_update_dr),
! [* }: J& T1 g      .debug_select_i                        (dbg_if_select),
, q$ I' U% J3 Z % e8 j5 E4 R' S0 [/ A2 @. N
      // Wishbone debug master0 z1 e/ k+ _8 f
      .wb_clk_i                                (wb_clk),$ p  h9 G. }; ]( t+ ~  d) s; U
      .wb_dat_i                                (wbm_d_dbg_dat_i),
; v( Q2 f0 ]1 I$ r      .wb_ack_i                                (wbm_d_dbg_ack_i),$ B7 \2 x& @2 L6 T  S
      .wb_err_i                                (wbm_d_dbg_err_i),0 L+ H) \" y; z% {
      .wb_adr_o                                (wbm_d_dbg_adr_o),+ U% n  D- B/ I' I3 t8 z/ z! }* R
      .wb_dat_o                                (wbm_d_dbg_dat_o),
6 |) C  ^7 t" x# ~! i      .wb_cyc_o                                (wbm_d_dbg_cyc_o),
) E% h' Q9 @7 x: ]5 x5 l6 I: a$ s# B      .wb_stb_o                                (wbm_d_dbg_stb_o),: A  o. }* B9 I8 J, p2 G/ q/ k% e
      .wb_sel_o                                (wbm_d_dbg_sel_o),
% D+ y0 e3 ?4 h, X& N4 R* _$ n+ y      .wb_we_o                                (wbm_d_dbg_we_o ),4 k4 W7 P- V/ A: w8 ?, A
      .wb_cti_o                                (wbm_d_dbg_cti_o),
- m+ M1 f8 J4 U/ I% f" o1 v; I$ A      .wb_cab_o                         (),
+ ^9 \3 d4 j3 D- Y/ n      .wb_bte_o                                (wbm_d_dbg_bte_o)
; k) o$ D; h: ]( k      );*/$ k! _+ X1 ~# O# z) m+ ], b. M
   ( I. d3 r, g) E: Z
        g; b' e, [$ [
`else // !`ifdef JTAG_DEBUG
9 E( K- K1 v* _) b- ]; ^  c5 d+ U" i5 O# W6 {

! C  a- ]* @! y2 o5>    修改ucf文件
5 ~3 S3 K9 b) \! Q2 y1 I/ s4 b& `" J- A! f0 }
由于我们采用的是xilinx_internal_jtag,不需要外部单独的jtag引脚,所以需要将ml501.ucf文件中jtag的4个引脚分配注释掉。
, `; P6 z/ u  G
1 U, t) T" d8 W. A* Y注意,最后一行不要注掉。( {4 d# B) C& y2 I' g. E. \8 V# d( z

( r' `- C& k$ ~# t#NET tdo_pad_o  LOC = E26; # HDR2_6) M, |* Q  ?' a; o: o5 z
#NET tdi_pad_i  LOC = E25; # HDR2_89 z( L4 \4 [/ W9 Q: i8 Z
#NET tms_pad_i  LOC = G22; # HDR2_102 H" J% c9 ]% Y# o
#NET tck_pad_i  LOC = G21; # HDR2_123 T4 S, ^3 b' h2 u$ e4 A# V

7 N  B1 {" O( N0 H& a+ x5 p#NET tdo_pad_o  TIG; NET tdo_pad_o  PULLUP; NET tdo_pad_o  IOSTANDARD = LVCMOS25;& S: b# Z5 Z7 W4 [8 ~7 s/ x
#NET tdi_pad_i  TIG; NET tdi_pad_i  PULLUP; NET tdi_pad_i  IOSTANDARD = LVCMOS25;
6 [$ n% {# \. Y- F8 Q9 Z#NET tms_pad_i  TIG; NET tms_pad_i  PULLUP; NET tms_pad_i  IOSTANDARD = LVCMOS25;1 g) q  |4 {  {
#NET tck_pad_i  TIG; NET tck_pad_i  PULLUP; NET tck_pad_i  IOSTANDARD = LVCMOS25;
) q" U/ p' h% h9 P" |# Overide the following mapping error:
6 K- N; u+ M3 l+ ?2 y4 e4 @# ERROR:Place:645 - A clock IOB clock component is not placed at an optimal clock3 R+ X. J  l9 W. {
# IOB site.
% T6 X+ S: O  n3 V' }NET "tck_pad_i" CLOCK_DEDICATED_ROUTE = FALSE;
& c& G: s# }& R3 p' q
6 c& ?" K8 B) `% s  {: a( {: n/ L1 o! I( ?3 F
6>    FPGA配置文件(orpsoc_top.bit)的下载
& S3 K, f+ @% U7 I* F& D6 \' s, q5 I: y( o
进行以上修改之后,在windows下综合生成bit文件。
  X$ \# p; N/ p% ~  ]' V
; O- r+ h; A; i4 X" D需要注意的是,我们要用JTAG下载,所以在生成bit文件时的配置(startup clk)需要选择‘JTAG CLK’。
6 P6 B8 P0 K  O: B" v  I" S( r' D, G$ a2 M4 E/ I2 A

6 v. X$ b3 T3 V, v! M  y7>    软件的下载与调试
+ v$ M% ?2 N) [+ w. _
. @4 ~9 r+ g& n在windows下用iMPACT将orpsoc_top.bit烧到FPGA(xc5vlx50)里面。
8 Q* h2 }8 s/ K0 _5 x7 C
+ B/ o9 Q. s& w+ }在jtag chaininit的时候,从打印信息中,我们可以发现,需要的4个bsd文件:xc5vlx50.bsd,xc95144xl.bsd,xccace.bsd,xcf32p.bsd。! p/ F' I) a; S) t8 P4 {$ E

7 p: H6 ~. W; w- Z这些文件可以在ISE的安装目录中找到。
; J$ T  L* Q- F+ i) A3 Y- q
3 ~/ `9 @; D  X2 R4 a+ D- \' m* g, ~; |  S
8>ML501的调试
: i5 ~3 y1 C. H7 T8 w! w4 A% V+ c; F4 w6 f& @5 [3 K, e" e! a
, d& L# u& w, h- B6 Q% G
万事俱备,只欠东风。做完以上工作之后,我们就可以对ML501上的ORPSoC进行调试运行软件了。
/ B7 t1 Z& z1 Z; s1 t# e4 @/ G0 \0 I0 _5 R0 O# s6 [
首先,在vbox的分配USB设备中选中下载线对应的名称,我这里是“Xilinx”。可以通过lsusb命令来查看。
' M9 g5 |9 t& x1 a2 R4 _$ K/ u) ?! q  N2 l2 @
然后,将xc5vlx50.bsd,xc95144xl.bsd,xccace.bsd,xcf32p.bsd复制到linux下的某个目录(eg.~/ml501_bsd)。
" O) O0 }' w  L( h! H
6 L8 A6 p. F# t- A  [  ^& w然后,运行adv_jtag_bridge  检测下载器,建立RSP server(默认RSP端口号是9999)。+ m; x1 Q# z: w5 ]4 x7 I

+ R5 B, f, }6 }adv_jtag_bridge -b ~/ml501_bsd/ xpc_usb
/ N1 f5 t8 f) r
- a6 p( I2 k1 V0 e具体使用方法,请参考adv_jtag_bridge的手册。
, u- c+ D8 u$ S* d! e& ]
. S3 p  o* B; B3 \& k% X% m运行之后,如下图所示:" v& i6 R% M3 u

# h: }( g) q' ]2 Y  E & Q! e; |$ C0 c, B0 ]7 e( ]# V
0 d0 D0 ~/ s7 ~) L! f
通过在xpc_usb之前加入‘-b’参数可进行自检:0 {4 A9 i# b: J

! a4 f  O% d) W8 k; T& C 4 }5 Q% d5 t7 @5 u8 J0 B
! e( w7 ~& o8 R$ Z
然后,运行or32-elf-gdb,建立和adv_jtag_bridge的RSP的链接。
  G8 R, w, o* w  |( u
: h  y# ], i: C* h3 por32-elf-gdb
  S. n; N* E) itarget remote:99995 C' H* |( w+ v1 M- y& H
file ~/soc-design/linux/vm;inux 或者file ~/soc-design/orpmon/orpmon.32; O, {7 q- T8 p0 m: V! [
load
  |6 M( e0 C" ]& _3 w% i
4 o1 b$ B- v$ [! G3 X如下图所示:
2 y3 G( V/ t; {/ }5 ~1 _0 o. T5 Y, M# [' p( c. T
load linux:
# s: y; ~) v. ^* n$ S; k, k! Q" m' t* z! K" w
1 m2 r% s6 f/ a! V
: p( G. [2 m0 T" P% x' O. Q1 `
load orpmon:; C6 G, L6 N/ Z, I- u# P
2 a; t( v7 h% y& Z5 Z4 t

" q8 W8 j3 X/ o7 B3 C$ t- t; l; a% {' C9 Q. r

5 H3 o6 w0 n8 A! G! \9 ~这里需要注意的是,orpmon在编译之前,需要修改配置文件(~/soc-design/orpmon/include/board.h),使之针对ML501板子:, H" n; I; W4 w/ L: ?+ t! |

7 L# t6 U! w8 J/ G
* A9 f- G: x. }8 m. ]7 o* T6 N# ~: `; i/ V% p& i

8 V  N' F  {+ L5 [# {: p# k7 _6 |此外还要修改时钟,使之和板子的时钟一致:板子的时钟在~/soc-design/orpsocv2/boards/xilinx/ml501/sw/board/include/board.h中有定义。
3 O- j) }! p: A% Z% O% x: C' ~+ i

& s( i4 E# T" c9 i% S  a; |9 ^! O3 ]  `8 N& j
修改完后,make即可生成ELF文件(orpmon.or32)和bin文件(orpmon.or32.bin)。
  a- g2 ^( a: P, I6 n% h  n. L
& x) I3 g1 v& k) K" UELF文件用来直接load到RAM执行,bin文件用bin2sizewordbin工具生成orpmon.or32.szbin和FPGA综合之后的orpsoc_top.bit合成mcs文件,烧到FPGA板子上的SPI FLASH里面。
3 P4 ?; K6 T$ k1 t9 v+ W( `( Q" p8 Y
  W1 u( X+ r, m
在下载程序之后,将板子的串口通过串口转USB线连接到PC机,打开串口调试工具,或者超级终端。6 r: @" ?- f+ }1 H! h3 }

# A, `( S1 [3 r3 M9 L0 l2 j运行程序,即可看到输出,如下图所示:
) {7 X  x6 k4 U, P% e* [
4 H+ ~7 p1 }, k5 l( a
0 X9 ]. u3 U( t3 ?
+ Z  F0 l9 f( {" @9 v) ^
) d7 D3 v$ P0 z7 U6 w) f
4 v. x% G* a  b2 v- b! k8 L
9 \& Z: W% g  D7 b" p7 U4,小结$ E: H! `$ S* i$ X+ D3 Q0 K; V3 ?
3 s* y$ t' d9 S
自此,我们搭建了orpsoc的仿真环境,调试环境。通过仿真环境,我们可以观察仿真波形,通过调试环境,我们可以用FPGA开发板进行实际验证。
: [) C5 J- K4 S0 h; X& K% G, z$ c+ I% h4 F# n  l7 R' v% Z
Enjoy!: V' Y4 [/ T5 N! |! y* {. o( @6 d
  • TA的每日心情
    慵懒
    2020-6-13 15:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-11-20 17:27 | 只看该作者
    ORPSoC调试环境的构建、
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 21:29 , Processed in 0.203125 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表