aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2021-11-18 22:16:28 +0000
committerYann Herklotz <git@yannherklotz.com>2021-11-18 22:16:28 +0000
commit0deea69405d5b4380e874b5b0209bf8a54027972 (patch)
tree99ce45339cd1e275866c677b1c0947d401af090b
parent47acd7870b8a577349016502779799c77fc91734 (diff)
downloadvericert-0deea69405d5b4380e874b5b0209bf8a54027972.tar.gz
vericert-0deea69405d5b4380e874b5b0209bf8a54027972.zip
Add a script to gather synthesis data
-rw-r--r--scripts/gather_data.rkt66
1 files changed, 66 insertions, 0 deletions
diff --git a/scripts/gather_data.rkt b/scripts/gather_data.rkt
new file mode 100644
index 0000000..b2aa9c5
--- /dev/null
+++ b/scripts/gather_data.rkt
@@ -0,0 +1,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"))