mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			130 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
See fstapi.h for the values for the FST_BL_XXX enums.
 | 
						|
 | 
						|
===========================================================================
 | 
						|
 | 
						|
compressed wrapper (typically over whole file)
 | 
						|
 | 
						|
uint8_t		FST_BL_ZWRAPPER
 | 
						|
uint64_t        section length
 | 
						|
uint64_t        length of uncompressed data
 | 
						|
[zlib compressed data]
 | 
						|
 | 
						|
===========================================================================
 | 
						|
 | 
						|
header block
 | 
						|
 | 
						|
uint8_t		FST_BL_HDR
 | 
						|
uint64_t	section length
 | 
						|
uint64_t	start time
 | 
						|
uint64_t	end time
 | 
						|
double		endian test for "e"
 | 
						|
uint64_t	memory used by writer
 | 
						|
uint64_t	scope creation count
 | 
						|
uint64_t	var creation count
 | 
						|
uint64_t	max var idcode
 | 
						|
uint64_t	vc section count
 | 
						|
int8_t		timescale exponent
 | 
						|
[128 bytes]	version
 | 
						|
[128 bytes]	date
 | 
						|
 | 
						|
===========================================================================
 | 
						|
 | 
						|
geometry block
 | 
						|
 | 
						|
uint8_t         FST_BL_GEOM
 | 
						|
uint64_t        section length
 | 
						|
uint64_t        length of uncompressed geometry data
 | 
						|
uint64_t        maxhandle
 | 
						|
[compressed data]
 | 
						|
 | 
						|
(length of compressed data is section length - 24)
 | 
						|
 | 
						|
===========================================================================
 | 
						|
 | 
						|
hierarchy block
 | 
						|
 | 
						|
uint8_t         FST_BL_HIER
 | 
						|
uint64_t        section length
 | 
						|
uint64_t        length of uncompressed hier data
 | 
						|
[zlib compressed data]
 | 
						|
 | 
						|
or
 | 
						|
 | 
						|
uint8_t         FST_BL_HIER_LZ4
 | 
						|
uint64_t        section length
 | 
						|
uint64_t        length of uncompressed hier data
 | 
						|
[lz4 compressed data]
 | 
						|
 | 
						|
uint8_t         FST_BL_HIER_LZ4DUO
 | 
						|
uint64_t        section length
 | 
						|
uint64_t        length of uncompressed hier data
 | 
						|
varint		length of hier data compressed once with lz4
 | 
						|
[lz4 double compressed data]
 | 
						|
 | 
						|
 | 
						|
===========================================================================
 | 
						|
 | 
						|
dumpon/off block
 | 
						|
 | 
						|
uint8_t         FST_BL_BLACKOUT
 | 
						|
uint64_t        section length
 | 
						|
varint		num blackouts (section below is repeated this # times)
 | 
						|
[
 | 
						|
uint8_t		on/off (nonzero = on)
 | 
						|
varint		delta time
 | 
						|
]
 | 
						|
 | 
						|
===========================================================================
 | 
						|
 | 
						|
1..n value change blocks:
 | 
						|
 | 
						|
// header
 | 
						|
 | 
						|
uint8_t		FST_BL_VCDATA (or FST_BL_VCDATA_DYN_ALIAS)
 | 
						|
uint64_t	section length
 | 
						|
uint64_t	begin time of section
 | 
						|
uint64_t	end time of section
 | 
						|
uint64_t	amount of buffer memory required in reader for full vc traversal
 | 
						|
varint		maxvalpos (length of uncompressed data)
 | 
						|
varint		length of compressed data
 | 
						|
varint		maxhandle associated with this checkpoint data
 | 
						|
[compressed data]
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
// value changes
 | 
						|
 | 
						|
varint		maxhandle associated with the value change data
 | 
						|
uint8_t		pack type ('F' is fastlz, '4' is lz4,
 | 
						|
			others ['Z'/'!'] are zlib)
 | 
						|
 | 
						|
varint		chain 0 compressed data length (0 = uncompressed)
 | 
						|
[compressed data]
 | 
						|
...
 | 
						|
varint		chain n compressed data length (0 = uncompressed)
 | 
						|
[compressed data]
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
// index: chain pointer table (from 0..maxhandle-1)
 | 
						|
 | 
						|
varint		if &1 == 1, this is <<1 literal delta
 | 
						|
		if &1 == 0, this is <<1 RLE count of zeros
 | 
						|
		if == 0, next varint is handle of prev chain to use,
 | 
						|
			bit only if FST_BL_VCDATA_DYN_ALIAS or
 | 
						|
			later VCDATA format
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
uint64_t	index length (subtract from here to get index position)
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
[compressed data for time section]
 | 
						|
uint64_t	uncompressed data length in bytes
 | 
						|
uint64_t	compressed data length in bytes
 | 
						|
uint64_t	number of time items
 | 
						|
 | 
						|
// end of section
 | 
						|
 | 
						|
===========================================================================
 |