Languages

CommunityCategory: XMODELDetermining the version of the FSDB reader and writer API libraries

XMODEL

Determining the version of the FSDB reader and writer API libraries

SA Support Team Staff 2023-09-08

I understand the XMODEL tools use the FSDB reader and writer API libraries made by Synopsys to read and write FSDB-format waveform files. The FSDB reader API library is named "libnffr.so" and the FSDB writer API library is named "libnffw.so". I notice that these libraries are not only provided in the Synospys Verdi product, but also included in various other products, such as Synopsys VCS and even Cadence Xcelium. I found that XMODEL works well with all the FSDB API libraries included in these different products.

I also noticed that the FSDB format has a notion of version, and the version of the FSDB reader/writer API library gets updated quite frequently. For the past 10 years or so, I've seen FSDB versions ranging from 5.6 to 6.1, and this version value depends on which FSDB API library is selected during the XMODEL or XWAVE execution. But the trouble is, the FSDB format is not forward compatible; that is, the FSDB reader API cannot read an FSDB-format waveform file if it is created with the FSDB writer API with the higher version. When this happens, I have to either find an FSDB reader API with the higher version or re-create the waveform file using the FSDB writer API with the lower version.

But I cannot tell the versions of the FSDB API libraries from their file names -- they are all named "libnffr.so" and "libnffw.so". Is there a way to determine the version of a given FSDB reader or writer API library file?

1 Answers
SA Support Team Staff 2023-09-08

Thank you for describing your needs in detail. To address your difficulty, we've introduced a utility script named 'fsdbvers' starting with the XMODEL 2023.08 Release. Using this 'fsdbvers' script, you can determine the version of a given FSDB reader or writer API library file.

The usage of this 'fsdbvers' script is fairly simple. Just provide the path to the FSDB API library file along with an option that indicates whether the file is expected to be a reader API library ('--reader') or a writer API library ('--writer').

The following example shows how to determine the version of an FSDB reader API library located in /PATH/libnffr.so.

$ fsdbvers --reader /PATH/libnffr.so
FSDB Reader API:
    Path    : /PATH/libnffr.so
    Release : Verdi_P-2019.06
    Version : 5.8

And the next example shows how to determine the version of an FSDB writer API library located in /PATH/libnffw.so.

$ fsdbvers --writer /PATH/libnffw.so
FSDB Writer API:
    Path    : /PATH/libnffw.so
    Release : Verdi_T-2022.06-SP2-1
    Version : 6.1

When you provide a path without a '--reader' or '--writer' option, the script looks for the FSDB API libraries included in its hierarchy and reports their versions.

$ fsdbvers /cad/synopsys/verdi/T-2022.06-SP2-1
FSDB Reader API:
    Path    : /cad/synopsys/verdi/T-2022.06-SP2-1/share/vcst/linux64/libnffr.so
    Release : Verdi_T-2022.06-SP2-1
    Version : 6.1

FSDB Writer API:
    Path    : /cad/synopsys/verdi/T-2022.06-SP2-1/share/vcst/linux64/libnffw.so
    Release : Verdi_T-2022.06-SP2-1
    Version : 6.1

XMODEL

FSDB reader 또는 writer API 라이브러리의 버전을 알아내는 방법

SA Support Team Staff 2023-09-08

XMODEL 툴들은 FSDB 형식의 파형 파일을 읽거나 쓰기 위해 Synopsys에서 만든 FSDB reader 또는 writer API 라이브러리를 사용하는 것을 알고 있습니다. 참고로 이 FSDB reader API 라이브러리는 파일명이 "libnffr.so"이고, FSDB writer API 라이브러리는 파일명이 "libnffw.so"입니다. 그리고 이들 라이브러리는 Synopsys의 Verdi 제품에서만 제공되는 것이 아니라, Synopsys의 VCS와 같은 다른 제품, 심지어는 Cadence의 Xcelium과 같은 다른 회사의 제품에도 포함되어 있는 것을 발견하였습니다. XMODEL 툴들은 어디에 포함되어 있든지 제가 본 모든 FSDB API 라이브러리들과 잘 동작하는 것 같네요.

그런데, FSDB 형식에 버전이라는 것이 있고, 그 버전이 꽤 자주 업데이트되는 것 같습니다. 지난 약 10년간 FSDB 형식의 버전은 5.6에서 6.1까지 계속 변화해 왔고, 이 버전값은 XMODEL 또는 XWAVE와 같은 툴이 실행될때 어떤 FSDB API 라이브러리를 사용하느냐에 따라 달라집니다. 여기서 문제는 이 FSDB 버전이 다르면 파형 읽기가 안되는 현상이 발생한다는 것입니다. 즉, 낮은 버전의 FSDB reader API는 더 높은 버전의 FSDB writer API를 사용해 생성한 파형 파일을 읽어들이지 못합니다. 이 문제가 발생하면, 저는 더 높은 버전의 FSDB reader API 라이브러리를 찾거나, 더 낮은 버전의 FSDB writer API 라이브러리를 사용해서 파형파일을 다시 생성해야 합니다.

하지만, FSDB API 라이브러리들의 파일명만 보고서는 그 버전을 알 수가 없어요. 그 파일 이름들은 버전에 관계없이 모두 "libnffr.so""libnffw.so"로 모두 똑같거든요. 주어진 FSDB reader 또는 writer API 라이브러리 파일로부터 버전값을 알아낼 수 있는 방법이 있을까요?

1 Answers
SA Support Team Staff 2023-09-08

Thank you for describing your needs in detail. To address your difficulty, we've introduced a utility script named 'fsdbvers' starting with the XMODEL 2023.08 Release. Using this 'fsdbvers' script, you can determine the version of a given FSDB reader or writer API library file.

The usage of this 'fsdbvers' script is fairly simple. Just provide the path to the FSDB API library file along with an option that indicates whether the file is expected to be a reader API library ('--reader') or a writer API library ('--writer').

The following example shows how to determine the version of an FSDB reader API library located in /PATH/libnffr.so.

$ fsdbvers --reader /PATH/libnffr.so
FSDB Reader API:
    Path    : /PATH/libnffr.so
    Release : Verdi_P-2019.06
    Version : 5.8

And the next example shows how to determine the version of an FSDB writer API library located in /PATH/libnffw.so.

$ fsdbvers --writer /PATH/libnffw.so
FSDB Writer API:
    Path    : /PATH/libnffw.so
    Release : Verdi_T-2022.06-SP2-1
    Version : 6.1

When you provide a path without a '--reader' or '--writer' option, the script looks for the FSDB API libraries included in its hierarchy and reports their versions.

$ fsdbvers /cad/synopsys/verdi/T-2022.06-SP2-1
FSDB Reader API:
    Path    : /cad/synopsys/verdi/T-2022.06-SP2-1/share/vcst/linux64/libnffr.so
    Release : Verdi_T-2022.06-SP2-1
    Version : 6.1

FSDB Writer API:
    Path    : /cad/synopsys/verdi/T-2022.06-SP2-1/share/vcst/linux64/libnffw.so
    Release : Verdi_T-2022.06-SP2-1
    Version : 6.1