Ver Fonte

fpga: generate .xsvf files

Generate .xsvf files (using my modified XSVF compiler.)
H. Peter Anvin há 3 anos atrás
pai
commit
a90ef02f46

+ 1 - 0
fpga/.gitignore

@@ -10,6 +10,7 @@ output/*.cof
 output/*.svf
 output/*.rbf
 output/*.rpd
+output/*.xsvf
 output/v?boot.jic
 output/v?boot.pof
 output/v?boot.rpd*

+ 9 - 2
fpga/Makefile

@@ -21,7 +21,8 @@ QPOW    	= $(QU)_pow $(QOPT)
 
 outdir		= output
 
-PERL		= perl		# Otherwise Quartus has a cow...
+PERL		= perl
+PYTHON		= python
 SED		= sed
 GZIP		= gzip
 
@@ -30,7 +31,8 @@ PREREQFILES = $(outdir)/sram.mif \
 	      $(foreach rev,$(REVISIONS),$(foreach coffmt,jic pof, \
 		$(outdir)/$(rev).$(coffmt).cof))
 
-alltarg := sof pof jic svf svf.gz rbf rbf.gz rpd rpd.gz pow.rpt sta.rpt
+alltarg := sof pof jic svf svf.gz xsvf xsvf.gz rbf rbf.gz \
+	   rpd rpd.gz pow.rpt sta.rpt
 allout   = $(foreach o,$(alltarg),$(outdir)/$(1).$(o))
 
 sram_src = ../rv32/boot.bin
@@ -96,6 +98,11 @@ $(outdir)/%.pof: $(outdir)/%.pof.cof $(outdir)/%.sof
 $(outdir)/%.svf: $(outdir)/%.sof
 	$(QCPF) -c -q 12.0MHz -g 3.3 -n p $< $@
 
+# xsvf: compact representation of .svf; more or less a wrapper around
+# the raw binary file.
+$(outdir)/%.xsvf: $(outdir)/%.svf ../tools/svf2xsvf.py
+	$(PYTHON) ../tools/svf2xsvf.py $< $@
+
 # Raw Binary File, compact data for transient programming or for loading
 # into flash (address 0); does *not* include the non-FPGA code; load
 # ../rv32/dram.{bin,bin.gz,hex} for that.

+ 4 - 4
fpga/max80.qpf

@@ -19,15 +19,15 @@
 #
 # Quartus Prime
 # Version 21.1.0 Build 842 10/21/2021 SJ Lite Edition
-# Date created = 16:05:11  February 04, 2022
+# Date created = 00:09:47  February 06, 2022
 #
 # -------------------------------------------------------------------------- #
 
 QUARTUS_VERSION = "21.1"
-DATE = "16:05:11  February 04, 2022"
+DATE = "00:09:47  February 06, 2022"
 
 # Revisions
 
-PROJECT_REVISION = "v2boot"
-PROJECT_REVISION = "v1"
 PROJECT_REVISION = "v2"
+PROJECT_REVISION = "v1"
+PROJECT_REVISION = "v2boot"

+ 31 - 31
fpga/output/sram.mif

@@ -6,7 +6,7 @@ DATA_RADIX = HEX;
 CONTENT BEGIN
 0000 : 00000000;
 0001 : 00000000;
-0002 : 70614E7C;
+0002 : ECD81CE9;
 0003 : 00200000;
 0004 : C0102473;
 0005 : 00008137;
@@ -198,12 +198,12 @@ CONTENT BEGIN
 00BF : 16204283;
 00C0 : 00028663;
 00C1 : 40007097;
-00C2 : C3E080E7;
+00C2 : C42080E7;
 00C3 : 400074B7;
 00C4 : 40007937;
 00C5 : 5AFD4981;
-00C6 : F9448493;
-00C7 : 00B90913;
+00C6 : F9848493;
+00C7 : 00F90913;
 00C8 : 40007A37;
 00C9 : 0750008B;
 00CA : 0810878B;
@@ -218,7 +218,7 @@ CONTENT BEGIN
 00D3 : 0FF47593;
 00D4 : 93638626;
 00D5 : 864A0003;
-00D6 : F9EA0513;
+00D6 : FA2A0513;
 00D7 : 40001097;
 00D8 : 384080E7;
 00D9 : BF7D89A2;
@@ -448,11 +448,11 @@ CONTENT BEGIN
 01B9 : 20097993;
 01BA : FE098CE3;
 01BB : 40007A37;
-01BC : 71CA0E13;
+01BC : 720A0E13;
 01BD : 000E2E83;
 01BE : 01234F37;
 01BF : 567F0F93;
-01C0 : 71CA0493;
+01C0 : 720A0493;
 01C1 : 01FE9963;
 01C2 : E7B740D8;
 01C3 : 809398BA;
@@ -976,12 +976,12 @@ CONTENT BEGIN
 03C9 : 002A6C13;
 03CA : 018AA023;
 03CB : 85934605;
-03CC : 051300BC;
+03CC : 051300FC;
 03CD : 4097E60D;
 03CE : 80E74000;
 03CF : C1050760;
 03D0 : 400077B7;
-03D1 : 3EC78513;
+03D1 : 3F078513;
 03D2 : 40000097;
 03D3 : 798080E7;
 03D4 : 000AA983;
@@ -989,17 +989,17 @@ CONTENT BEGIN
 03D6 : 005AA023;
 03D7 : 0850BF4D;
 03D8 : 8513100C;
-03D9 : 002300BC;
+03D9 : 002300FC;
 03DA : CA020201;
 03DB : 40005097;
 03DC : EBA080E7;
 03DD : 7DB74652;
 03DE : 100C4000;
-03DF : 405D8513;
+03DF : 409D8513;
 03E0 : 40000097;
 03E1 : 760080E7;
 03E2 : 082C0870;
-03E3 : 00BC8513;
+03E3 : 00FC8513;
 03E4 : 5097CC02;
 03E5 : 80E74000;
 03E6 : 4E72D2C0;
@@ -1007,7 +1007,7 @@ CONTENT BEGIN
 03E8 : 5E834000;
 03E9 : 2F0300AE;
 03EA : 851301CE;
-03EB : 9693433F;
+03EB : 9693437F;
 03EC : 0613009E;
 03ED : 0097FFEF;
 03EE : 80E74000;
@@ -1037,13 +1037,13 @@ CONTENT BEGIN
 0406 : 00A66833;
 0407 : 400078B7;
 0408 : 01032023;
-0409 : 3B988913;
+0409 : 3BD88913;
 040A : 4C354329;
 040B : 00094683;
 040C : EE990905;
 040D : C8A98891;
 040E : 40007A37;
-040F : 3CEA0D13;
+040F : 3D2A0D13;
 0410 : 4CB54C29;
 0411 : 4A81A01D;
 0412 : 4A81B5E1;
@@ -1060,10 +1060,10 @@ CONTENT BEGIN
 041D : 15634E12;
 041E : 7EB7160E;
 041F : 87934000;
-0420 : 4FA93D5E;
+0420 : 4FA93D9E;
 0421 : A82149B5;
 0422 : 40007AB7;
-0423 : 3C8A8D13;
+0423 : 3CCA8D13;
 0424 : 9463BF45;
 0425 : 002301F2;
 0426 : 00239930;
@@ -1149,7 +1149,7 @@ CONTENT BEGIN
 0476 : 5DBA5D4A;
 0477 : 8082612D;
 0478 : 40007F37;
-0479 : 3E1F0793;
+0479 : 3E5F0793;
 047A : FDB1BD69;
 047B : 000C4603;
 047C : 00167813;
@@ -1171,21 +1171,21 @@ CONTENT BEGIN
 048C : 7FB7044D;
 048D : 874A4000;
 048E : 008F0693;
-048F : 465F8613;
+048F : 469F8613;
 0490 : 85224591;
 0491 : 400079B7;
 0492 : DA840D93;
 0493 : 40005097;
-0494 : 14C080E7;
-0495 : 57098993;
+0494 : 340080E7;
+0495 : 57498993;
 0496 : 0009A683;
 0497 : 12068363;
 0498 : 400077B7;
 0499 : 86138722;
-049A : 059346D7;
+049A : 05934717;
 049B : 10080400;
 049C : 40005097;
-049D : 128080E7;
+049D : 31C080E7;
 049E : 2AECC283;
 049F : 0012F713;
 04A0 : 4083CB05;
@@ -1225,7 +1225,7 @@ CONTENT BEGIN
 04C2 : 79B7CB51;
 04C3 : 10104000;
 04C4 : 851385A2;
-04C5 : 00974729;
+04C5 : 00974769;
 04C6 : 80E74000;
 04C7 : 03133CA0;
 04C8 : 03930220;
@@ -1237,7 +1237,7 @@ CONTENT BEGIN
 04CE : 612080E7;
 04CF : 7DB7C911;
 04D0 : 85A24000;
-04D1 : 486D8513;
+04D1 : 48AD8513;
 04D2 : 40000097;
 04D3 : 398080E7;
 04D4 : 044D2603;
@@ -1747,12 +1747,12 @@ CONTENT BEGIN
 06CC : 6362612F;
 06CD : 6B736964;
 06CE : 3030382E;
-06CF : 7246002F;
-06D0 : 65462069;
-06D1 : 34202062;
-06D2 : 3A353120;
-06D3 : 303A3034;
-06D4 : 53502037;
+06CF : 7553002F;
+06D0 : 6546206E;
+06D1 : 36202062;
+06D2 : 3A303020;
+06D3 : 343A3930;
+06D4 : 53502034;
 06D5 : 30322054;
 06D6 : 003232;
 [06D7..1FFF] : 00;

BIN
fpga/output/v1.jic


BIN
fpga/output/v1.rbf.gz


BIN
fpga/output/v1.rpd.gz


BIN
fpga/output/v1.sof


BIN
fpga/output/v1.svf.gz


BIN
fpga/output/v1.xsvf.gz


BIN
fpga/output/v2.jic


BIN
fpga/output/v2.rbf.gz


BIN
fpga/output/v2.rpd.gz


BIN
fpga/output/v2.sof


BIN
fpga/output/v2.svf.gz


BIN
fpga/output/v2.xsvf.gz


BIN
fpga/output/v2boot.xsvf.gz


+ 12 - 3
rv32/Makefile

@@ -1,6 +1,6 @@
 MAKEFLAGS += -R -r
 
-SUBDIRS  := include test roms fatfs/source
+SUBDIRS  := include test roms fatfs/source zlib
 
 CROSS	  = ../tools/gnu/bin/riscv32-unknown-elf-
 CC	  = $(CROSS)gcc
@@ -11,7 +11,7 @@ NM	  = $(CROSS)nm
 PERL      = perl
 GZIP	  = gzip
 
-INCLUDE   = -I. -I./include -I./fatfs/source
+INCLUDE   = -I. -I./include -I./zlib -I./fatfs/source
 include ../riscv-opts.mk
 CPPFLAGS  = $(INCLUDE) $(riscv_flags)
 CFLAGS    = $(CPPFLAGS) -W -Wextra
@@ -67,6 +67,15 @@ fatfs.a: $(FATFS_O)
 	rm -f $@
 	$(AR) cq $@ $(FATFS_O)
 
+ZLIB_C = $(wildcard zlib/*.c)
+ZLIB_O = $(ZLIB_C:.c=.o)
+zlib.a: $(ZLIB_O)
+	rm -f $@
+	$(AR) cq $@ $(ZLIB_O)
+
+CFLAGS_zlib/inflate.c := -Wno-implicit-fallthrough
+CFLAGS_zlib/infback.c := -Wno-implicit-fallthrough
+
 CFLAGS_memset.c := -O2
 
 %.hex: %.elf
@@ -138,7 +147,7 @@ irqtable.h: ../iodevs.conf ../tools/iodevs.pl
 
 clean:
 	for d in . $(SUBDIRS); do \
-		rm -f $$d/*.o $$d/*.i $$d/*.s $$d/*.elf $$d/*.bin \
+		rm -f $$d/*.a $$d/*.o $$d/*.i $$d/*.s $$d/*.elf $$d/*.bin \
 		$$d/.*.d $$d/*.ild $$d/*.map; \
 	done
 	rm -f $(genhdrs) $(gensrcs)