blob: b2aa9c5880b83d17deb76120ae03bebaa3a4b513 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#lang racket
(require xml)
(require xml/path)
(require racket/match)
(require csv-reading)
(require csv-writing)
(require graphite)
(require data-frame)
(require sawzall)
(require threading)
(permissive-xexprs #t)
(define (parse-vivado-report f)
(let* ([encode-xml-port (open-input-file f)]
[report (xml->xexpr (document-element (read-xml encode-xml-port)))])
(close-input-port encode-xml-port)
report))
(define (list->hash l)
(foldr (lambda (v l)
(hash-set l (car v) (string->number (cadr v))))
(hash) l))
(define (process-vivado-report report)
(let ([maps (map (lambda (x) (match x [(list e (list (list a b) (list c d))) (list b d)]))
(filter-not string? (se-path*/list '(section) report)))])
(list->hash maps)))
(define (parse-sim-report f)
(let* ([exec-csv (open-input-file f)]
[report (csv->list exec-csv)])
(close-input-port exec-csv)
report))
(define sim-report (list->hash (parse-sim-report "exec.csv")))
(define vivado-report (process-vivado-report (parse-vivado-report "encode_report.xml")))
(define cycles (hash-ref sim-report "covariance"))
(define delay (hash-ref vivado-report "XILINX_DESIGN_DELAY"))
(* cycles delay)
(define gss (df-read/csv "exec.csv"))
(df-add-series gss (make-series "tool" #:data (make-vector (df-row-count gss) "vericert")))
(df-add-series gss (make-series "delay" #:data (list->vector (map (lambda (x)
(~> "/encode_report.xml"
(string-append x _)
parse-vivado-report
process-vivado-report
(hash-ref "XILINX_DESIGN_DELAY")))
(filter-not (lambda (x) (equal? x "test-case")) (map car (hash->list sim-report)))))))
(show gss everything #:n-rows 'all)
(graph #:data gss
#:title "Chart"
#:mapping (aes #:x "test-case" #:y "cycle count")
(col #:gap 0.25))
;(define csv (open-output-file "out.csv"))
|