diff options
Diffstat (limited to 'testsuite/gna/bug019/PoC/src/common/debug.vhdl')
-rw-r--r-- | testsuite/gna/bug019/PoC/src/common/debug.vhdl | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/testsuite/gna/bug019/PoC/src/common/debug.vhdl b/testsuite/gna/bug019/PoC/src/common/debug.vhdl new file mode 100644 index 0000000..dda3cb0 --- /dev/null +++ b/testsuite/gna/bug019/PoC/src/common/debug.vhdl @@ -0,0 +1,87 @@ +-- EMACS settings: -*- tab-width: 2; indent-tabs-mode: t -*- +-- vim: tabstop=2:shiftwidth=2:noexpandtab +-- kate: tab-width 2; replace-tabs off; indent-width 2; +-- +-- ============================================================================ +-- Authors: Thomas B. Preusser +-- Martin Zabel +-- Patrick Lehmann +-- +-- Package: Debug helper functions. +-- +-- Description: +-- ------------------------------------ +-- This file declares a debug helper function to export enum encodings as a +-- ChipScope readable token file (*.tok). +-- +-- License: +-- ============================================================================ +-- Copyright 2007-2015 Technische Universitaet Dresden - Germany, +-- Chair for VLSI-Design, Diagnostics and Architecture +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- ============================================================================ + +use STD.TextIO.all; + +library PoC; +use PoC.strings.all; + + +package debug is + impure function dbg_ExportEncoding(Name : STRING; encodings : string; tokenFileName : STRING) return BOOLEAN; + +end package; + + +package body debug is + impure function dbg_ExportEncoding(Name : STRING; encodings : string; tokenFileName : STRING) return BOOLEAN is + file tokenFile : TEXT open WRITE_MODE is tokenFileName; + + variable cnt, base : integer; + variable l : line; + begin + report "Exporting encoding of '" & Name & "' to '" & tokenFileName & "'..." severity note; + report "dbg_ExportEncoding: '" & encodings & "'" severity note; + + -- write file header + write(l, STRING'("# Encoding file for '" & Name & "'")); writeline(tokenFile, l); + write(l, STRING'("#")); writeline(tokenFile, l); + write(l, STRING'("# ChipScope Token File Version")); writeline(tokenFile, l); + write(l, STRING'("@FILE_VERSION=1.0.0")); writeline(tokenFile, l); + write(l, STRING'("#")); writeline(tokenFile, l); + write(l, STRING'("# Default token value")); writeline(tokenFile, l); + write(l, STRING'("@DEFAULT_TOKEN=")); writeline(tokenFile, l); + write(l, STRING'("#")); writeline(tokenFile, l); + + -- write state entires + cnt := 0; + base := encodings'left; + for i in encodings'range loop + if encodings(i) = ';' then + -- Leave the str_trim call in! + -- Otherwise, the new parser of ISE 14.7 fails to slice properly. + write(l, str_trim(encodings(base to i-1))); + write(l, character'('=')); + write(l, raw_format_nat_hex(cnt)); + writeline(tokenFile, l); + cnt := cnt + 1; + base := i+1; + end if; + end loop; + + file_close(tokenFile); + return true; + end function; +end package body; + |