fpgacpu.org - XSOC Known Issues

XSOC Known Issues

Home

xr16 >>
<< XSOC Talk


News Index
2002
Jan Feb Mar
Apr May Jun
Jul Aug Sep
2001
Jan Feb Mar
Apr May Jun
Jul Aug Sep
Oct Nov Dec
2000
Apr Aug Sep
Oct Nov Dec

Links
Fpga-cpu List
Usenet Posts
Site News
Papers
Teaching
Resources
Glossary
Gray Research

GR CPUs

XSOC
Launch Mail
Circuit Cellar
LICENSE
README
XSOC News
XSOC Talk
Issues
xr16

XSOC 2.0
XSOC2 Log

CNets
CNets Log
Google SiteSearch
issues -- issues database
Copyright (C) 2000, Gray Research LLC. All rights reserved.
The contents of this file are subject to the XSOC License Agreement;
you may not use this file except in compliance with this Agreement.
See the LICENSE file.
open issues (12): 
 2 not-impl lcc-xr16 long integers are not implemented 
 3 not-impl xr16asm far branch displacements are not implemented 
 4 not-impl libxr16 most kinds of mul div and mod are not implemented 
 5 not-impl libxr16 variable bit-count shifts are not implemented 
 6 defect xsoc VGA only displays 560 pixels/line, not 576 
 7 wish libxr16 xr16 needs a C runtime library 
 8 not-impl lcc-xr16 lcc-xr16 needs a test suite 
 9 not-impl xr16asm xr16 assembler/simulator needs a test suite 
 11 defect xsoc timespecs do not include async RAM delay offsets 
 14 wish xsoc XSOC/xr16 refloorplanned for XC4010XL 
 16 defect doc xspecs.pdf: b<cond> a,-32768 broken 
 17 defect xr16iss b<cond> a,-32768 broken 
assigned issues (1): 
 10 not-impl xr16cpu xr16 cpu needs a test suite 
resolved issues (1): 
 20 defect xsoc problems building under Foundation 2.1i. 
closed issues (6): 
 1 note doc how to use the issues tracking system 
 12 wish misc issues tracking should include version number info 
 13 defect xsoc XSOC did not run on a v1.4+ board 
 15 defect lcc-xr16 some unsigned hex consts promoted to long 
 18 defect xr16asm cmpi reg,-32768 broken 
 19 defect xr16asm cmpi reg,0 broken 
Issue: 1 note doc how to use the issues tracking system
Opened: 02/26/00 jan-@fpgacpu.org
 See file issues-howto
Closed: 02/26/00 jan-@fpgacpu.org
Issue: 2 not-impl lcc-xr16 long integers are not implemented
Opened: 02/26/00 jan-@fpgacpu.org
 1. May need to revise long int pseudo-ops specification in xspecs.pdf.
 2. Need to modify lcc-xr16's xr16.md to emit proper long int pseudo-ops.
 3. Need to modify xr16asm to implement those pseudo-ops.
 4. Need to write long int test suite.
Issue: 3 not-impl xr16asm far branch displacements are not implemented
Opened: 02/26/00 jan-@fpgacpu.org
 Repro: lcc-xr16 -o 3.hex -Wl-lst=3.lst 3.c
 Errors:
 xr16: branch displacement overflow at 0084 target 'L3'
 xr16: branch displacement overflow at 01A2 target 'L2'
Issue: 4 not-impl libxr16 most kinds of mul div and mod are not implemented
Opened: 02/26/00 jan-@fpgacpu.org
 Currently only unsigned multiply is implemented.
 Repro: lcc-xr16 -o 4.hex -Wl-lst=4.lst 4.c
 Errors:
 xr16: undefined symbol '_muli2'
 xr16: undefined symbol '_divi2'
 xr16: undefined symbol '_modi2'
 xr16: undefined symbol '_divu2'
 xr16: undefined symbol '_modu2'
 xr16: undefined symbol '_muli4'
 xr16: undefined symbol '_divi4'
 xr16: undefined symbol '_modi4'
 xr16: undefined symbol '_mulu4'
 xr16: undefined symbol '_divu4'
 xr16: undefined symbol '_modu4'
Issue: 5 not-impl libxr16 variable bit-count shifts are not implemented
Opened: 02/26/00 jan-@fpgacpu.org
 Repro: lcc-xr16 -o 5.hex -Wl-lst=5.lst 5.c
 Errors:
 xr16: undefined symbol '_sllr'
 xr16: undefined symbol '_slllr'
 xr16: undefined symbol '_srar'
 xr16: undefined symbol '_srlr'
 xr16: undefined symbol '_sralr'
 xr16: undefined symbol '_srllr'
Issue: 6 defect xsoc VGA only displays 560 pixels/line, not 576
Opened: 02/26/00 jan-@fpgacpu.org
 There's something wrong with horizontal blanking with respect
 to the video pixel shift pipeline, and so the VGA display does not
 display the last 16 pixels/line.
Issue: 7 wish libxr16 xr16 needs a C runtime library
Opened: 02/26/00 jan-@fpgacpu.org
 This project needs a C runtime library. We need one with full source,
 that is 16-bit portable, and is compatible with the lcc C compiler.
 The last time I looked most of the available CRTs depended upon
 some GCC language extensions...
Issue: 8 not-impl lcc-xr16 lcc-xr16 needs a test suite
Opened: 02/26/00 jan-@fpgacpu.org
 There is no lcc-xr16 cross-compiler test suite yet. Surely one could
 be built using the xr16 simulator.
Issue: 9 not-impl xr16asm xr16 assembler/simulator needs a test suite
Opened: 02/26/00 jan-@fpgacpu.org
 There is no xr16 assembler/simulator test suite yet.
Issue: 10 not-impl xr16cpu xr16 cpu needs a test suite
Opened: 02/26/00 jan-@fpgacpu.org
 There is no xr16 test suite yet. There should be a minimal one that
 could be run in the Foundation simulator, and another, built upon
 the first, that could be run in the actual hardware.
Owner: 04/01/00 jan-@fpgacpu.org
 tests/xr16.s is a start. It runs in the xr16 instruction set sim,
 and in a Verilog simulator. It still needs a test harness to run
 in hardware.
Issue: 11 defect xsoc timespecs do not include async RAM delay offsets
Opened: 02/27/00 jan-@fpgacpu.org
 The various xsoc-*.ucf constraint files include timespecs which are
 essential for optimizing placement and routing and for ensuring
 the resulting design passes static timing analysis.
 Current the XSOC UCF timespecs are not correct, because they do not
 include OFFSET timings to account for the delay from the FPGA
 address and control signals, through the RAMs, and back into the FPGA.
 Even if trce reports the worst case cycle time is <41 ns, this does
 not guarantee the design will run at the target cycle time of 80 ns
 if we do not factor in this external delay through external RAM.
Issue: 12 wish misc issues tracking should include version number info
Opened: 02/27/00 jan-@fpgacpu.org
 It would be nice if each resolved or closed issue included the
 XSOC version number in which the issue was first resolved.
Resolv: 03/17/00 fixed 0.92 jan-@fpgacpu.org
 Done!
Closed: 03/17/00 jan-@fpgacpu.org
Issue: 13 defect xsoc XSOC did not run on a v1.4+ board
Opened: 03/17/00 jan-@fpgacpu.org
 Someone reports that XSOC (xsoc-10xl-13.bit) doesn't work on his XS40
 v1.4+ board. This is troubling because it works on mine.
Owner: 03/17/00 jan-@fpgacpu.org
 It may have something to do with which version of XSTOOLS you are running.
Resolv: 03/17/00 fixed 0.92 jan-@fpgacpu.org
 The problem does indeed have to do with which version of XSTOOLS
 you are using. In this case, we test XSOC with v1.2, v1.3, and
 v1.4+ boards, but we had been doing so using a single installation
 of XSTOOLS, apparently corresponding to a v1.3 board. (Oops.)
 For v1.4+ boards, the 0.91 design lets XA<15> and XA16 float high
 via default weak pullups, and this worked because the (v1.3)
 XSLOAD also let XA<15> and XA16 float high during load of the
 .hex memory image. The XSOC 0.91 design, which ran out of
 logical address 0x0000, was actually running out of 'physical
 address' 0x18000.
 However, the user was (correctly) using the XSTOOLS for v1.4+
 to XSLOAD his v1.4+ board, and this version drives A15/A16 and so
 correctly uploads the .hex memory image to 'physical address' 0x00000.
 When the 0.91 configuration was loaded, it once again ran code at
 'physical address' 0x18000, which crashes unpredictably.
 The fix was to modify the XSOC.sch design to tie XA16 to ground,
 and modify the xsoc*.ucf files to apply pin LOCs (XA<15>=P28,
 XA16=P16) so as to properly drive the v1.4+ board's 128 KB SRAM
 address lines A15 and A16.
 As a bonus, this now provides an almost full 64 KB of RAM
 (0000-FEFF) on v1.4+ boards. (Recall FFxx is the I/O control
 register space).
 Now that XA16=P16 is being driven, the new xsoc-*-14.bit MUST NOT
 be run on pre-v1.4 XS40 boards, because they also drive P16 with
 the output of the inverter U3C (see p.17 of XS40-manual-v1_3.pdf).
 Therefore there will be yet another set of UCF files that drive
 XA16=P? (v1.2, v1.3) or XA16=P16 (v1.4, v1.4+). (On a v1.4
 (not +) board, it should be benign to drive XA<15>=P28 and
 XA16=P16 even though there these signals do not drive pins on
 the 32 KB SRAM).
 UCF File Target
 -------- ------
 xsoc-05xl-13.ucf XS40 v1.2 or v1.3, 4005XL
 xsoc-10xl-13.ucf XS40 v1.2 or v1.3, 4010XL
 xsoc-05xl-14.ucf XS40 v1.4 or v1.4+, 4005XL
 xsoc-10xl-14.ucf XS40 v1.4 or v1.4+, 4010XL
 We also need new kinds of prebuild xsoc.bit files:
 Bitstream Target
 -------- ------
 xsoc-05xl-12.bit XS40 v1.2, 4005XL
 xsoc-10xl-12.bit XS40 v1.2, 4010XL
 xsoc-05xl-13.bit XS40 v1.3, 4005XL
 xsoc-10xl-13.bit XS40 v1.3, 4010XL
 xsoc-05xl-14.bit XS40 v1.4 or v1.4+, 4005XL
 xsoc-10xl-14.bit XS40 v1.4 or v1.4+, 4010XL
Closed: 04/04/00 jan-@fpgacpu.org
Issue: 14 wish xsoc XSOC/xr16 refloorplanned for XC4010XL
Opened: 03/20/00 jan-@fpgacpu.org
 XSOC/xr16 is currently floorplanned for a 14x14 CLB XC4005XL.
 When built on a XC4010XL, it retains the same floorplan, with the
 result that the datapath is placed on rows 7-14. In an '4010, it
 would be better if the datapath were placed on rows 13-20.
 There is no convenient way to do this using schematics, however.
 Hopefully we can do better with the Verilog version.
Issue: 15 defect lcc-xr16 some unsigned hex consts promoted to long
Opened: 03/31/00 jan-@fpgacpu.org
 Repro: lcc-xr16 -S 15.c (and review 15.s)
 Problem report:
 From: Jamie R. Chinn (jamiechi-@fultonscrossing.com)
 Sent: Friday, March 31, 2000 1:42 AM
 To: fpga-cpu@egroups.com
 Subject: [fpga-cpu] Constants in LCC-XR16 compiler
 A constant such as 0x8000 is by default treated as a four byte long.
 This creates lots of errors. (Such as zexl and leal not found.)
 To work around this, explicitly cast the constant to unsigned.
 (unsigned)0x8000 or 0x8000u
 Shouldn't the default be the two byte int or unsigned int? (I believe
 the int is defined as 16 bits for the XR16.)
 Indeed this is an error. The type of 0x8000 should be unsigned int
 per C standard:
 Section 3.1.3.2. Integer Constants
 "The type of an integer constant is the first of the corresponding
 list in which its value can be represented: ... unsuffixed octal or
 hexadecimal: int, unsigned int, long int, unsigned long int ..."
 While 0x8000 (32768) is not representable as an int, it is representable
 as an unsigned int, but lcc mistakenly promotes it to long.
Resolv: 03/31/00 fixed 0.93 jan-@fpgacpu.org
 Problem lay in function icon in src/lex.c. Quote:
 static Symbol icon(unsigned long n, int overflow, int base) {
 ...
 } else if (overflow || n > longtype->u.sym->u.limits.max.i)
 tval.type = unsignedlong;
 else if (n > inttype->u.sym->u.limits.max.i)
 tval.type = longtype;
 else if (base != 10 && n > inttype->u.sym->u.limits.max.i)
 tval.type = unsignedtype;
 else
 tval.type = inttype;
 ...
 Fix was to change this to
 static Symbol icon(unsigned long n, int overflow, int base) {
 ...
 } else if (overflow || n > longtype->u.sym->u.limits.max.i)
 tval.type = unsignedlong;
 #if 1 /* 00/03/31 jan-@fpgacpu.org XSOC issue #15 fix added */
 else if (base != 10 &&
 n > inttype->u.sym->u.limits.max.i &&
 n <= unsignedtype->u.sym->u.limits.max.i)
 tval.type = unsignedtype;
 #endif
 else if (n > inttype->u.sym->u.limits.max.i)
 tval.type = longtype;
 #if 0 /* 00/03/31 jan-@fpgacpu.org XSOC issue #15 fix deleted */
 else if (base != 10 && n > inttype->u.sym->u.limits.max.i)
 tval.type = unsignedtype;
 }
 #endif
 else
 tval.type = inttype;
 ...
Closed: 04/04/00 jan-@fpgacpu.org
Issue: 16 defect doc xspecs.pdf: b<cond> a,-32768 broken
Opened: 04/03/00 jan-@fpgacpu.org
 The instruction set specification uses comparisons with the negation
 of the b operand to describe the behavior of all b<cond>s. Example:
 Format: blt label
 ...
 Operation: pre
 if ((signed)a < (signed)-b)
 pc += 2*sign_ext(disp8) + 2;
 ...
 The problem here is (signed)-b is undefined for b==-32768 (0x8000).
Issue: 17 defect xr16iss b<cond> a,-32768 broken
Opened: 04/03/00 jan-@fpgacpu.org
 The ISS works as documented in issue #16, which disagrees with the
 Verilog model.
Issue: 18 defect xr16asm cmpi reg,-32768 broken
Opened: 04/03/00 jan-@fpgacpu.org
 The xr16 assembler turns cmpi reg,imm into addi r0,reg,-imm.
 This is OK for cmpi/beq and cmpi/bne, but it doesn't work
 for cmpi/b<other> if imm==-32768, because -imm==32768 is not
 representable in 16-bit 2's complement. It should use something like:
 cmpi reg,imm => addi r0,reg,-imm if imm != -32768
 => lea r1,-32768 if imm == -32768
 cmp reg,r1
 => imm 0x8000
 addi r1,r0,0
 and r0,r0 ; nop
 sub r0,reg,r1 
Resolv: 04/03/00 fixed 0.93 jan-@fpgacpu.org
 Fixed as above.
Closed: 04/04/00 jan-@fpgacpu.org
Issue: 19 defect xr16asm cmpi reg,0 broken
Opened: 04/03/00 jan-@fpgacpu.org
 The xr16 assembler turns cmpi reg,0 into addi r0,reg,0.
 This doesn't set carry-out properly. Contrast
 lea r2,2 => addi r2,r0,2
 cmpi r2,1 addi r0,r2,-1 ; sets carry-out
 bltu label bltu label ; carry-out set, so branch cond is false
 with
 lea r2,2 => addi r2,r0,2
 cmpi r2,0 addi r0,r2,0 ; clears carry-out
 bltu label bltu label ; carry-out clear, so cond is true, WRONG
 Here the addi of 0 fails to set carry-out, whereas if we generated
 lea r2,2 => addi r2,r0,2
 cmpi r2,0 sub r0,r2,r0 ; => add 0002 + ~0000 + 1, sets carry-out
 bltu label bltu label ; carry-out set, so cond is false, RIGHT
 So it's a little tricky, but the fix is to map
 cmpi reg,0 => sub r0,reg,r0
Resolv: 04/03/00 fixed 0.93 jan-@fpgacpu.org
 Fixed as above.
Closed: 04/04/00 jan-@fpgacpu.org
Issue: 20 defect xsoc problems building under Foundation 2.1i.
Opened: 04/03/00 jan-@fpgacpu.org
 Reported by jamiechi-@fultonscrossing.com (Jamie R. Chinn):
 "Version 2.1i doesn't like the three 'unbonded' outputs
 that were in the configuration file. I had to assign them to
 specific pins."
Resolv: 04/04/00 fixed 0.93 jan-@fpgacpu.org
 Fixed. For the v1.2 and v1.3 boards, the UCF files
 xsoc-05xl-13.ucf and xsoc-05xl-14.ucf now constrain these
 unused outputs to device pins that drive 8031 I/Os:
 NET XA<0> LOC = P7; # P1.0 (unused)
 NET XA<15> LOC = P8; # P1.1 (unused)
 NET XA16 LOC = P9; # P1.2 (unused)
 For the v1.4 and v1.4+ boards, the UCF files
 xsoc-05xl-14.ucf and xsoc-10xl-14.ucf now constrain these
 unused outputs to device pins that drive 8031 I/Os:
 NET XA<0> LOC = P7; # P1.0 (unused)
 This should eliminate all unbonded outputs, and hence the problem
 F2.1i has with them.

Copyright © 2000-2002, Gray Research LLC. All rights reserved.
Last updated: Feb 03 2001

AltStyle によって変換されたページ (->オリジナル) /