diff options
author | Yann Herklotz <git@yannherklotz.com> | 2020-04-17 14:55:23 +0100 |
---|---|---|
committer | Yann Herklotz <git@yannherklotz.com> | 2020-04-17 14:55:23 +0100 |
commit | 9ba75dc996009a7a01960fce72a25d43c557f542 (patch) | |
tree | 11507e8a3c626646230013180e4a58bcc8425259 | |
parent | 11b738182df0f6ceacd4e3dd1a1fd9fb5d1ce713 (diff) | |
download | vericert-kvx-9ba75dc996009a7a01960fce72a25d43c557f542.tar.gz vericert-kvx-9ba75dc996009a7a01960fce72a25d43c557f542.zip |
Add Simulator.v
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | src/Simulator.v | 32 |
2 files changed, 33 insertions, 1 deletions
@@ -12,7 +12,7 @@ COQMAKE := "$(COQBIN)coq_makefile" COQUPDIRS := translation common verilog VSSUBDIR := $(foreach d, $(COQUPDIRS), src/$(d)/*.v) -VS := src/Compiler.v $(VSSUBDIR) +VS := src/Compiler.v src/Simulator.v $(VSSUBDIR) PREFIX ?= . diff --git a/src/Simulator.v b/src/Simulator.v new file mode 100644 index 0000000..3c5aca0 --- /dev/null +++ b/src/Simulator.v @@ -0,0 +1,32 @@ +(* -*- mode: coq -*- + * CoqUp: Verified high-level synthesis. + * Copyright (C) 2020 Yann Herklotz <yann@yannherklotz.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + *) + +From Coq Require Import FSets.FMapPositive. + +From compcert Require Import Errors. + +From coqup Require Compiler Verilog Value. +From coqup Require Import Coquplib. + +Local Open Scope error_monad_scope. + +Definition simulate (n : nat) (m : Verilog.module) : res (list (positive * Value.value)) := + do map <- Verilog.module_run n m; + OK (PositiveMap.elements map). + +Local Close Scope error_monad_scope. |