У меня есть модуль, написанный в System Verilog, который сбрасывает содержимое SRAM в файл. Я хотел бы прочитать из этого файла и использовать данные в отдельной программе, написанной на python, но в режиме реального времени. У меня нет большого контроля над написанием кода Verilog. Можно ли каким-то образом управлять двумя чтениями и писать? В настоящее время, когда он читается из файла, в начале каждой строки вставлено (по-видимому) случайное число, которое отбрасывает разбор. Я предполагаю, что эти префиксы появляются только тогда, когда они читают и пишут одновременно, потому что, если я запускаю их как очень медленно, он отлично работает.Чтение и запись в файл одновременно
window = Tk()
canvas = Canvas(window, width=WIDTH, height=HEIGHT, bg="#000000")
canvas.pack()
img = PhotoImage(width=WIDTH, height=HEIGHT)
canvas.create_image((WIDTH/2, HEIGHT/2), image=img, state="normal")
def redraw():
fp = open('test_data.txt','r')
lines=fp.readlines()
for i in range(len(lines)):
#do stuff
fp.close()
window.after(35,redraw)
window.after(35,redraw)
mainloop()
Это то, что читается.
Любые предложения приветствуются.
Это мне кажется плохой идеей, и вам нужен другой способ контроля, когда один процесс может читать данные, созданные другим в файле, например, используя fifo. «Случайный материал», который вы читаете, может быть вызван тем фактом, что вы читаете * строки. * Если полный контент «ab \ ncd \ nef \ n», это три строки; но если частичный файл содержит «ab \ nc», он будет считаться двумя строками, а когда больше будет позже, «d \ nef \ n» будет считаться двумя дополнительными строками. –
Как насчет использования [sqlite] (http://www.sqlite.org/), который является очень простой автономной базой данных. Python говорит об этом с помощью [sqlite3] (http://docs.python.org/2/library/sqlite3.html), но вам нужно будет связать код C/C++ с вашим симулятором verilog в качестве системной задачи или DPI позвоните, чтобы заставить Verilog говорить об этом. –
Использовать файлы для общения в режиме реального времени звучит как плохая идея. Можете ли вы изменить код SystemVerilog для вызова функции DPI вместо записи в файл? – dwikle